Analisis Portofolio Valuta Asing Menggunakan Algoritma Genetika Berbasis Multi Agent

  

LISTING PROGRAM

Form Menu Utama using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace PrediksiValas

  {

  public partial class MDIParent1 : Form

  {

  Kelas kelas = new Kelas (); public MDIParent1()

  { InitializeComponent(); }

  

private void MDIParent1_Load( object sender, EventArgs

  e) { }

  private void exitToolStripMenuItem_Click( object sender, EventArgs

  e) {

  this .Close();

  }

  private void aboutToolStripMenuItem_Click( object sender, EventArgs

  e) {

  AboutBox1 frm = new AboutBox1 (); //frm.MdiParent = this;

  frm.Show(); }

  private void helpToolStripMenuItem_Click( object sender, EventArgs

  e) {

  Helps frm = new Helps (); //frm.MdiParent = this;

  frm.Show(); }

  private void prediksiValasToolStripMenuItem_Click( object

  sender, EventArgs

  e) {

  Prediksi frm = new Prediksi (); //frm.MdiParent = this;

  frm.Show(); } } }

  Form Prediksi using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace PrediksiValas

  {

  public partial class Prediksi : Form

  {

  int [] kurs; int banyakPopulasi = 0; //Grafik formGrafik; Kelas kelas = new Kelas (); public Prediksi()

  { InitializeComponent(); }

  private Boolean check()

  {

  Boolean chek = true ; if (txtPath.Text == "" || txtMinyak.Text == "" ||

  txtKrisisEkonomi.Text == "" || txtInflasi.Text == "" || txtKrisisMoneter.Text == "" || banyakPopulasi==0) { chek = false ; }

  return chek;

  }

  private Boolean check2()

  {

  Boolean chek = true ; if (txtFitnessEkonomi.Text == "" ||

  txtFitnessInflasi.Text == "" || txtFitnessKrisisMoneter.Text == "" || txtFitnessMinyak.Text == "" ) { chek = false ; }

  return chek;

  }

  private void txtFitnessDunia_Load( object sender, EventArgs

  e) {

  //formGrafik = new Grafik();

  }

  private void btnInput_Click( object sender, EventArgs

  e) { openFileDialog1.Title = "Buka File Text Kurs." ; openFileDialog1.Filter = "All Files (*.*)|*.*" ; openFileDialog1.RestoreDirectory = true ; openFileDialog1.FileName = "" ; openFileDialog1.ShowDialog(); if (txtPath.Text != "" )

  { listBox1.Items.Clear();

  FileStream inp = File .OpenRead(txtPath.Text); StreamReader input = new StreamReader (inp); //formGrafik.hapusChart1Series0();

  chart1.Series[1].Points.Clear();

  int z = 1; try

  {

  while (input.Peek() > -1)

  {

  String baris = input.ReadLine().Trim();

  listBox1.Items.Add(baris);

  //formGrafik.chart1.Series[0].Points.AddXY(z, baris); //chart1.Series[0].Points.AddXY(z, baris);

  chart1.Series[1].Points.AddXY(z, baris); z++; } }

  finally

  { input.Close(); } banyakPopulasi = listBox1.Items.Count; kurs = new int [banyakPopulasi];

  for ( int i = 0; i < listBox1.Items.Count; i++)

  { kurs[i] =

  Convert .ToInt16(listBox1.Items[i].ToString());

  } txtMaxGenerasi.Text = banyakPopulasi.ToString(); } }

  private void openFileDialog1_FileOk( object sender, CancelEventArgs

  e) {

  Stream strm;

  strm = openFileDialog1.OpenFile(); txtPath.Text = openFileDialog1.FileName.ToString();

  if (strm != null )

  { strm.Close(); } }

  

private void btnFitness_Click( object sender, EventArgs

  e) {

  if (check() != false )

  {

  int mnyk =

  kelas.cariFitness( Convert .ToInt32(txtMinyak.Text), banyakPopulasi);

  int eko =

  kelas.cariFitness( Convert .ToInt32(txtKrisisEkonomi.Text), banyakPopulasi); int infla =

  kelas.cariFitness( Convert .ToInt32(txtInflasi.Text), banyakPopulasi);

  int mone =

  kelas.cariFitness( Convert .ToInt32(txtKrisisMoneter.Text), banyakPopulasi); txtFitnessMinyak.Text = kelas.desimalKeBiner(mnyk); txtFitnessEkonomi.Text = kelas.desimalKeBiner(eko); txtFitnessInflasi.Text = kelas.desimalKeBiner(infla); txtFitnessKrisisMoneter.Text = kelas.desimalKeBiner(mone); }

  else

  {

  MessageBox .Show( "Nilai kromosom belum diisi atau data belum diinput!!" );

  } }

  private void btnRoullette_Click( object sender, EventArgs

  e) {

  if (check2() != false )

  {

  int [] data = new int [4];

  data[0] =

  Convert .ToInt32(kelas.binerKeDesimal(txtFitnessMinyak.Text));

  data[1] =

  Convert .ToInt32(kelas.binerKeDesimal(txtFitnessEkonomi.Text));

  data[2] =

  Convert .ToInt32(kelas.binerKeDesimal(txtFitnessInflasi.Text));

  data[3] =

  

Convert .ToInt32(kelas.binerKeDesimal(txtFitnessKrisisMoneter.Text));

int [] terpilih = kelas.rouletteWheel(data);

  txtKromosom1.Text = kelas.desimalKeBiner(data[terpilih[0]]); txtKromosom2.Text = kelas.desimalKeBiner(data[terpilih[1]]); }

  else

  {

  MessageBox .Show( "Tahap pengisian data belum selesai!" );

  } }

  private void button1_Click( object sender, EventArgs

  e) {

  if (txtKromosom1.Text != "" || txtKromosom2.Text != "" )

  {

  String crossOver = kelas.crossOver(txtKromosom1.Text,

  txtKromosom2.Text);

  int split = crossOver.Length / 2; String biner1 = crossOver.Substring(0, split); String biner2 = crossOver.Substring(split);

  txtCrossOver1.Text = biner1; txtCrossOver2.Text = biner2; } else

  {

  MessageBox .Show( "Roullette Wheel belum diproses!" );

  } }

  

private void btnMutation_Click( object sender, EventArgs

  e) {

  if (txtCrossOver1.Text != "" || txtCrossOver2.Text != ""

  || txtMaxGenerasi.Text != "" ) { listBox3.Items.Clear(); listBox2.Items.Clear();

  //formGrafik.hapusChart1Series1();

  chart1.Series[0].Points.Clear();

  String biner1 = txtCrossOver1.Text; String biner2 = txtCrossOver2.Text; int total = 0; int [] hasil = kelas.mutation(biner1, biner2,

  Convert .ToInt16(txtMaxGenerasi.Text));

for ( int i = 0; i < hasil.Length; i++)

  { listBox2.Items.Add(hasil[i]);

  double persenan = 0.0; if

  ( Convert .ToDouble(listBox1.Items[i].ToString()) <

  Convert .ToDouble(hasil[i]))

  { persenan =

  Convert .ToDouble(listBox1.Items[i].ToString()) * 0.2;

  persenan = persenan +

  Convert .ToDouble(listBox1.Items[i].ToString()); if ( Convert .ToDouble(hasil[i]) > persenan)

  { listBox3.Items.Add( "Periode ke [" + (i+1)

  "], dengan nilai kurs = " + hasil[i] + ", JUAL." ); +

  }

  else

  { listBox3.Items.Add( "Periode ke [" + (i + 1) + "], dengan nilai kurs = " + hasil[i] + ", TAHAN." ); } }

  else

  { persenan =

  Convert .ToDouble(listBox1.Items[i].ToString()) * 0.2;

  persenan =

  Convert .ToDouble(listBox1.Items[i].ToString()) - persenan; if ( Convert .ToDouble(hasil[i]) < persenan)

  { listBox3.Items.Add( "Periode ke [" + (i + 1) + "], dengan nilai kurs = " + hasil[i] + ", BELI." ); }

  else

  { listBox3.Items.Add( "Periode ke [" + (i + 1) + "], dengan nilai kurs = " + hasil[i] + ", TAHAN." );

  } }

  //formGrafik.chart1.Series[1].Points.AddXY(i + 1, hasil[i]);

  chart1.Series[0].Points.AddXY(i + 1, hasil[i]); total += hasil[i]; }

  //formGrafik.Show();

  }

  else

  {

  MessageBox .Show( "Cross over belum di lakukan, atau nilai maximum generasi belum di input!" );

  } }

  

private void btnSimpan_Click( object sender, EventArgs

  e) { saveFileDialog1.Title = "Simpan nilai hasil mutasi." ; saveFileDialog1.Filter = "Text Files (*.txt)|*.txt" ; saveFileDialog1.RestoreDirectory = true ; saveFileDialog1.ShowDialog(); }

  private void saveFileDialog1_FileOk( object sender, CancelEventArgs

  e) {

  TextWriter tw = new StreamWriter (saveFileDialog1.FileName);

for ( int i = 0; i < listBox2.Items.Count; i++)

  { tw.WriteLine(listBox2.Items[i].ToString()); } tw.Close(); }

  private void txtInflasi_TextChanged( object sender, EventArgs

  e) { }

  private void chart1_Click( object sender, EventArgs

  e) { } } }

  Form Help using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace PrediksiValas

  {

  public partial class Helps : Form

  {

  public Helps()

  { InitializeComponent(); }

  private void Helps_Load( object sender, EventArgs

  e) { } } }

  Form About using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Linq; using System.Reflection; using System.Windows.Forms; namespace PrediksiValas

  {

  partial class AboutBox1 : Form

  {

  public AboutBox1()

  { InitializeComponent();

  this .Text = String .Format( "About {0}" , AssemblyTitle); this .labelProductName.Text = "Analisis Pemilihan

Portofolio Valuta Asing Menggunakan Algoritma Genetika Berbasis Multi

Agent" ; this .labelVersion.Text = String .Format( "Version {0}" ,

  AssemblyVersion);

  this .labelCopyright.Text = "Nasan Martua Siregar" ; this .labelCompanyName.Text = "Parkiranger Corporation" ; this .textBoxDescription.Text = AssemblyDescription;

  }

  #region Assembly Attribute Accessors public string AssemblyTitle

  {

  get

  { object [] attributes =

Assembly .GetExecutingAssembly().GetCustomAttributes( typeof ( AssemblyTi

tleAttribute ), false ); if (attributes.Length > 0)

  {

  AssemblyTitleAttribute titleAttribute =

  ( AssemblyTitleAttribute )attributes[0];

  if (titleAttribute.Title != "" )

  {

  return titleAttribute.Title;

  } }

  return

  System.IO. Path .GetFileNameWithoutExtension( Assembly .GetExecutingAssem bly().CodeBase); } }

  public string AssemblyVersion

  {

  get

  {

  return Assembly .GetExecutingAssembly().GetName().Version.ToString();

  } }

  public string AssemblyDescription

  {

  get

  {

  object [] attributes =

Assembly .GetExecutingAssembly().GetCustomAttributes( typeof ( AssemblyDe

scriptionAttribute ), false ); if (attributes.Length == 0)

  {

  return "" ;

  }

  return

  (( AssemblyDescriptionAttribute )attributes[0]).Description; } }

  public string AssemblyProduct

  {

  get

  {

  object [] attributes =

Assembly .GetExecutingAssembly().GetCustomAttributes( typeof ( AssemblyPr

oductAttribute ), false ); if (attributes.Length == 0)

  {

  return "" ;

  }

  return

  (( AssemblyProductAttribute )attributes[0]).Product; } }

  public string AssemblyCopyright

  {

  get

  {

  object [] attributes =

Assembly .GetExecutingAssembly().GetCustomAttributes( typeof ( AssemblyCo

pyrightAttribute ), false ); if (attributes.Length == 0)

  {

  return "" ;

  }

  return

  (( AssemblyCopyrightAttribute )attributes[0]).Copyright; } }

  public string AssemblyCompany

  {

  get

  {

  object [] attributes =

Assembly .GetExecutingAssembly().GetCustomAttributes( typeof ( AssemblyCo

mpanyAttribute ), false ); if (attributes.Length == 0)

  {

  return "" ;

  }

  return

  (( AssemblyCompanyAttribute )attributes[0]).Company; } }

  #endregion

private void AboutBox1_Load( object sender, EventArgs

  e) { }

  

private void okButton_Click( object sender, EventArgs

  e) {

  this .Close();

  }

  private void labelProductName_Click( object sender, EventArgs

  e) { } } }

  Kelas Prediksi Valas using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace PrediksiValas

  {

  class Kelas

  {

  

public string crossOver( string biner1, string biner2)

  {

  Random rnd = new Random (); int penanda = rnd.Next(biner1.Length); String temp1, temp2; if (penanda < biner1.Length-1)

  { temp1 = biner1.Substring(penanda, 2); temp2 = biner2.Substring(penanda, 2); biner1 = biner1.Remove(penanda, 2); biner1 = biner1.Insert(penanda, temp2); biner2 = biner2.Remove(penanda, 2); biner2 = biner2.Insert(penanda, temp1); }

  else

  { temp1 = biner1.Substring(penanda - 1, 2); temp2 = biner2.Substring(penanda - 1, 2); biner1 = biner1.Remove(penanda - 1, 2); biner1 = biner1.Insert(penanda - 1, temp2); biner2 = biner2.Remove(penanda - 1, 2); biner2 = biner2.Insert(penanda - 1, temp1); }

  return biner1 + biner2;

  }

  public int binerKeDesimal( string biner)

  {

  int hasil = 0; int multi = 0;

for ( int i = biner.Length - 1; i >= 0; i--)

  {

  if (biner.Substring(i, 1) == "1" )

  { hasil += ( int ) Math .Pow(2, multi); } multi++; }

  return hasil;

  }

  public string desimalKeBiner( int desimal)

  {

  string biner = "" ; int temp = 0; while (desimal > 0)

  { temp = desimal % 2; desimal /= 2; biner = biner.Insert(0, Convert .ToString(temp)); }

  if (biner.Length < 16)

  {

  int temps = 16 - biner.Length; for ( int i = 0; i < temps; i++)

  { biner = biner.Insert(0, "0" ); } }

  return biner;

  }

  public int cariFitness( int kromosom, int bnykPopulasi)

  {

  double fit = (( double )bnykPopulasi /

  (( double )bnykPopulasi + 1.0)) * ((2.2 + (2.0 * 2.0) + (2.01 * ( double )kromosom * ( double )kromosom)) / (2.0 * ( double )kromosom));

  return Convert .ToInt32(fit);

  }

  public int [] rouletteWheel( int [] kromosom)

  {

  Random rnd = new Random (); int [] acak = new int [2];

  acak[0] = rnd.Next(kromosom.Length);

  do

  { acak[1] = rnd.Next(kromosom.Length); } while (acak[1] == acak[0]);

  return acak;

  }

  public int [] mutation( String biner1, String biner2, int

  maxGenerasi) {

  Random rnd = new Random (); int [] hasil = new int [maxGenerasi]; for ( int i = 0; i < maxGenerasi; i++)

  {

  int acak = rnd.Next(2); String temp; if (acak == 0)

  {

  int penanda = rnd.Next(biner1.Length-4) + 3; if (penanda < biner1.Length - 1)

  { temp = biner1.Remove(penanda,2);

  String a = rnd.Next(2).ToString(); String b = rnd.Next(2).ToString();

  temp = temp.Insert(penanda, a + b); hasil[i] = binerKeDesimal(temp); }

  else

  { temp = biner1.Remove(penanda - 1, 2);

  String a = rnd.Next(2).ToString(); String b = rnd.Next(2).ToString();

  temp = temp.Insert(penanda - 1, a + b); hasil[i] = binerKeDesimal(temp); } }

  else

  {

  int penanda = rnd.Next(biner2.Length-4) + 3; if (penanda < biner2.Length - 1)

  { temp = biner2.Remove(penanda, 2);

  String a = rnd.Next(2).ToString(); String b = rnd.Next(2).ToString();

  temp = temp.Insert(penanda, a + b); hasil[i] = binerKeDesimal(temp); }

  else

  { temp = biner2.Remove(penanda - 1, 2);

  String a = rnd.Next(2).ToString(); String b = rnd.Next(2).ToString();

  temp = temp.Insert(penanda - 1, a + b); hasil[i] = binerKeDesimal(temp); } } }

  return hasil;

  } }

  Kurs IDR-USD 2010 Tanggal/ Bulan/Tahun Kurs Beli IDR-USD

  8 Nov 2010 8868.00

  22 Nov 2010 8878.00

  19 Nov 2010 8892.00

  18 Nov 2010 8914.00

  16 Nov 2010 8913.00

  15 Nov 2010 8891.00

  12 Nov 2010 8873.00

  11 Nov 2010 8844.00

  10 Nov 2010 8859.00

  9 Nov 2010 8860.00

  5 Nov 2010 8854.00

  24 Nov 2010 8928.00

  4 Nov 2010 8864.00

  3 Nov 2010 8877.00

  2 Nov 2010 8882.00

  1 Nov 2010 8876.00

  29 Oct 2010 8883.00

  28 Oct 2010 8893.00

  27 Oct 2010 8883.00

  26 Oct 2010 8868.00

  25 Oct 2010 8882.00

  22 Oct 2010 8891.00

  23 Nov 2010 8900.00

  25 Nov 2010 8913.00

  31 Dec 2010 8946.00

  15 Dec 2010 8973.00

  30 Dec 2010 8933.00

  29 Dec 2010 8969.00

  28 Dec 2010 8987.00

  27 Dec 2010 8996.00

  23 Dec 2010 9003.00

  22 Dec 2010 9005.00

  21 Dec 2010 8996.00

  20 Dec 2010 9000.00

  17 Dec 2010 8989.00

  16 Dec 2010 8991.00

  14 Dec 2010 8966.00

  26 Nov 2010 8921.00

  13 Dec 2010 8974.00

  10 Dec 2010 8970.00

  9 Dec 2010 8966.00

  8 Dec 2010 8975.00

  6 Dec 2010 8963.00

  3 Dec 2010 8969.00

  2 Dec 2010 8972.00

  1 Dec 2010 8987.00

  30 Nov 2010 8968.00

  29 Nov 2010 8988.00

  21 Oct 2010 8887.00

  20 Oct 2010 8895.00

  19 Oct 2010 8884.00

  18 Oct 2010 8884.00

  15 Oct 2010 8878.00

  14 Oct 2010 8876.00

  13 Oct 2010 8882.00

  12 Oct 2010 8884.00

  11 Oct 2010 8880.00

  8 Oct 2010 8877.00

  7 Oct 2010 8882.00

  6 Oct 2010 8877.00

  5 Oct 2010 8902.00

  4 Oct 2010 8877.00

  1 Oct 2010 8876.00 30-Sep-10 8879.00 29-Sep-10 8898.00 28-Sep-10 8907.00 27-Sep-10 8906.00 24-Sep-10 8913.00 23-Sep-10 8908.00 22-Sep-10 8906.00 21-Sep-10 8923.00 20-Sep-10 8934.00 17-Sep-10 8940.00 16-Sep-10 8935.00 15-Sep-10 8928.00 14-Sep-10 8909.00 08-Sep-10 8971.00 07-Sep-10 8966.00 06-Sep-10 8944.00 03-Sep-10 8967.00 02-Sep-10 8963.00 01-Sep-10 8989.00

  31 Aug 2010 8996.00

  30 Aug 2010 8960.00

  27 Aug 2010 8945.00

  26 Aug 2010 8939.00

  25 Aug 2010 8931.00

  24 Aug 2010 8929.00

  23 Aug 2010 8933.00

  20 Aug 2010 8920.00

  19 Aug 2010 8922.00

  18 Aug 2010 8924.00

  16 Aug 2010 8943.00

  13 Aug 2010 8945.00

  12 Aug 2010 8962.00

  11 Aug 2010 8921.00

  10 Aug 2010 8908.00

  9 Aug 2010 8887.00

  6 Aug 2010 8897.00

  5 Aug 2010 8911.00

  4 Aug 2010 8900.00

  3 Aug 2010 8896.00

  2 Aug 2010 8893.00 30-Jul-10 8907.00 29-Jul-10 8957.00 28-Jul-10 8978.00 27-Jul-10 8969.00 26-Jul-10 8995.00 23-Jul-10 9010.00 22-Jul-10 9024.00 21-Jul-10 9007.00 20-Jul-10 9013.00 19-Jul-10 9031.00 16-Jul-10 9003.00 15-Jul-10 9002.00 14-Jul-10 9003.00 13-Jul-10 9011.00 12-Jul-10 9005.00 09-Jul-10 9019.00 08-Jul-10 9025.00 07-Jul-10 9029.00 06-Jul-10 9043.00 05-Jul-10 9015.00 02-Jul-10 9003.00 01-Jul-10 9049.00

  30-Jun-10 9038.00 29-Jun-10 8988.00 28-Jun-10 8995.00 25-Jun-10 9005.00 24-Jun-10 8998.00 23-Jun-10 9010.00 22-Jun-10 8988.00 21-Jun-10 8970.00 18-Jun-10 9089.00 17-Jun-10 9121.00 16-Jun-10 9114.00 15-Jun-10 9133.00 14-Jun-10 9138.00 11-Jun-10 9154.00 10-Jun-10 9204.00 09-Jun-10 9192.00 08-Jun-10 9219.00 07-Jun-10 9249.00 04-Jun-10 9158.00 03-Jun-10 9144.00 02-Jun-10 9189.00 01-Jun-10 9164.00

  31 May 2010 9134.00

  27 May 2010 9291.00

  26 May 2010 9326.00

  25 May 2010 9288.00

  24 May 2010 9223.00

  21 May 2010 9288.00

  20 May 2010 9159.00

  19 May 2010 9122.00

  18 May 2010 9087.00

  17 May 2010 9099.00

  14 May 2010 9049.00

  12 May 2010 9069.00

  11 May 2010 9028.00

  10 May 2010 9074.00

  7 May 2010 9247.00

  6 May 2010 9159.00

  5 May 2010 9008.00

  4 May 2010 8972.00

  3 May 2010 8985.00 30-Apr-10 8967.00 29-Apr-10 8977.00 28-Apr-10 8978.00 27-Apr-10 8968.00 26-Apr-10 8956.00 23-Apr-10 8971.00 22-Apr-10 8982.00 21-Apr-10 8962.00 20-Apr-10 8983.00 19-Apr-10 9001.00 16-Apr-10 8973.00 15-Apr-10 8959.00 14-Apr-10 8964.00 13-Apr-10 8975.00 12-Apr-10 8958.00 09-Apr-10 9004.00 08-Apr-10 9019.00 07-Apr-10 8992.00 06-Apr-10 9000.00 05-Apr-10 9010.00 01-Apr-10 9030.00

  31-Mar-10 9069.00 30-Mar-10 9025.00 29-Mar-10 9045.00 26-Mar-10 9090.00 25-Mar-10 9092.00 24-Mar-10 9074.00 23-Mar-10 9073.00 22-Mar-10 9070.00 19-Mar-10 9079.00 18-Mar-10 9074.00 17-Mar-10 9103.00 15-Mar-10 9129.00 12-Mar-10 9137.00 11-Mar-10 9139.00

  Kurs Hasil Percobaan Prediksi Bulan

  Kurs Asli 2011

  Kurs Hasil Prediksi 2011 (Percobaan II)

  Pembuktian (Percobaan II)

  Kurs Hasil Prediksi 2011 (Percobaan III)

  Pembuktian (Percobaan

  III) Kurs Hasil Prediksi 2011 (Percobaan IV)

  Pembuktian (Percobaan

  IV) Desember 9023 9302 9023 7792 9114 9538 TRUE 9114 TRUE 9278 TRUE

  9119 9550 TRUE 9119 TRUE 9282 TRUE 9045 8876 TRUE 9045 TRUE 7536 TRUE 8970 8940 FALSE 8970 TRUE 9774 TRUE 9028 8270 TRUE 9028 FALSE 10030 TRUE 9059 9230 FALSE 9059 TRUE 9278 FALSE 9069 8876 TRUE 9069 TRUE 9792 TRUE 9043 9294 TRUE 9043 TRUE 9646 TRUE 8990 9132 FALSE 8990 TRUE 5744 TRUE 9089 8270 TRUE 9089 TRUE 9262 TRUE 9045 9900 FALSE 9045 FALSE 6768 TRUE 9045 9358 TRUE 9045 TRUE 7792 TRUE 9040 9310 TRUE 9040 TRUE 9326 TRUE 8995 8620 TRUE 8995 TRUE 11310 TRUE 9040 9310 TRUE 9040 TRUE 7792 FALSE 9038 9294 FALSE 9038 TRUE 7760 TRUE 9038 8876 TRUE 9038 TRUE 7260 TRUE 9020 9900 FALSE 9020 FALSE 11310 FALSE 9057 8844 TRUE 9057 TRUE 9518 FALSE November 9040 9294 TRUE 9040 TRUE 9254 FALSE 9124 9388 FALSE 9124 FALSE 9346 TRUE

  9139 8868 TRUE 9139 TRUE 9362 TRUE 9054 9290 TRUE 9054 TRUE 9646 TRUE 8960 8812 TRUE 8960 TRUE 9270 TRUE 9053 9358 TRUE 9053 TRUE 7280 FALSE 8990 8748 TRUE 8990 FALSE 9390 TRUE 8990 9302 FALSE 8990 FALSE 7536 FALSE 9025 9294 TRUE 9025 TRUE 10030 TRUE 9010 9132 TRUE 9010 FALSE 7792 TRUE 8995 9230 TRUE 8995 TRUE 9230 TRUE 8985 9262 TRUE 8985 TRUE 7920 TRUE 8950 10924 TRUE 8950 TRUE 9774 TRUE 8910 9132 TRUE 8910 FALSE 9262 TRUE 8960 9230 TRUE 8960 TRUE 9278 TRUE 8930 9550 TRUE 8930 TRUE 11310 TRUE 8851 8364 TRUE 8851 FALSE 7696 TRUE 8888 8940 FALSE 8888 TRUE 7792 TRUE 8895 8620 TRUE 8895 FALSE 7795 TRUE 8917 8940 TRUE 8917 TRUE 8048 TRUE 8938 9294 TRUE 8938 TRUE 7796 FALSE 8930 8876 TRUE 8930 TRUE 9260 TRUE 8849 9806 TRUE 8849 TRUE 7796 TRUE 8791 9388 TRUE 8791 TRUE 7280 TRUE Oktober 8784 8270 TRUE 8784 FALSE 9518 TRUE 8846 9294 FALSE 8846 TRUE 9254 FALSE

  8826 9294 FALSE 8826 TRUE 9774 TRUE

  8831 8876 TRUE 8831 TRUE 9782 TRUE 8839 8882 TRUE 8839 TRUE 7792 FALSE 8824 10924 TRUE 8824 TRUE 9774 TRUE 8796 8748 TRUE 8796 TRUE 9263 TRUE 8711 8876 FALSE 8711 TRUE 9258 TRUE 8816 8748 TRUE 8816 TRUE 9646 TRUE 8801 9286 FALSE 8801 FALSE 7760 TRUE 8849 8940 TRUE 8849 TRUE 7792 TRUE 8865 11342 FALSE 8865 TRUE 11310 TRUE 8900 9294 TRUE 8900 TRUE 9250 FALSE 8895 9282 TRUE 8895 FALSE 7796 TRUE 8910 9286 FALSE 8910 TRUE 7792 FALSE 8923 8892 TRUE 8923 TRUE 9646 TRUE 8880 10924 TRUE 8880 TRUE 7536 TRUE 8875 9286 TRUE 8875 TRUE 9262 TRUE 8915 9302 TRUE 8915 TRUE 8238 FALSE 8880 8876 TRUE 8880 TRUE 9390 TRUE 8779 9422 TRUE 8779 TRUE 7798 TRUE September 8880 9550 FALSE 8880 FALSE 7776 FALSE 8930 9342 TRUE 8930 TRUE 9262 TRUE

  8870 8876 FALSE 8870 TRUE 9774 TRUE 8930 8876 TRUE 8930 TRUE 9782 TRUE 8691 9230 FALSE 8691 TRUE 7792 TRUE 8943 8844 TRUE 8943 TRUE 7792 FALSE 8831 13390 FALSE 8831 FALSE 7770 TRUE 8935 9004 TRUE 8935 TRUE 13358 TRUE 8761 13390 TRUE 8761 TRUE 1648 TRUE 8728 9900 TRUE 8728 TRUE 7280 TRUE 8715 9294 TRUE 8715 TRUE 7792 TRUE 8686 9326 TRUE 8686 TRUE 9262 TRUE 8579 8782 TRUE 8579 TRUE 9256 TRUE 8560 9294 TRUE 8560 TRUE 11310 TRUE 8528 8270 TRUE 8528 FALSE 7804 TRUE 8528 8884 TRUE 8528 TRUE 9774 TRUE 8521 9132 FALSE 8521 TRUE 7800 TRUE 8530 8864 TRUE 8530 TRUE 9774 TRUE 8496 9282 TRUE 8496 TRUE 9262 TRUE 8535 9294 TRUE 8535 TRUE 9270 TRUE Agustus 8534 8864 TRUE 8534 TRUE 9262 TRUE 8503 9230 TRUE 8503 TRUE 7920 TRUE

  8501 8876 TRUE 8501 FALSE 9230 TRUE 8509 10924 FALSE 8509 FALSE 9262 TRUE 8515 8876 TRUE 8515 TRUE 9518 TRUE 8490 8864 TRUE 8490 TRUE 9262 TRUE 8483 13390 FALSE 8483 FALSE 5744 TRUE 8498 9294 TRUE 8498 TRUE 7792 TRUE 8498 9302 FALSE 8498 TRUE 9230 TRUE 8402 8748 TRUE 8402 TRUE 7792 TRUE 8487 9358 FALSE 8487 TRUE 5744 FALSE 8512 8908 TRUE 8512 TRUE 9262 TRUE 8490 9302 FALSE 8490 FALSE 9262 FALSE 8495 9132 TRUE 8495 TRUE 9278 TRUE 8441 8868 TRUE 8441 FALSE 9230 TRUE

  8445 10924 TRUE 8445 TRUE 10286 TRUE 8418 9422 FALSE 8418 FALSE 9278 TRUE 8439 8748 TRUE 8439 FALSE 7793 FALSE 8465 8876 TRUE 8465 TRUE 9262 TRUE Juli 8466 9294 TRUE 8466 TRUE 7804 FALSE 8447 9358 TRUE 8447 TRUE 9260 TRUE

  8478 9422 TRUE 8478 FALSE 7536 FALSE 8485 11342 TRUE 8485 TRUE 7776 TRUE 8484 9294 FALSE 8484 TRUE 9454 TRUE 8496 9004 TRUE 8496 TRUE 9254 FALSE 8497 9326 TRUE 8497 FALSE 11310 TRUE 8515 9422 TRUE 8515 TRUE 15406 TRUE 8512 8876 TRUE 8512 TRUE 7744 TRUE 8494 12972 FALSE 8494 TRUE 9262 TRUE 8495 10062 FALSE 8495 FALSE 7696 FALSE 8519 8892 TRUE 8519 TRUE 9256 TRUE 8506 9678 TRUE 8506 TRUE 7793 TRUE 8479 8940 TRUE 8479 TRUE 9518 TRUE 8481 10924 FALSE 8481 TRUE 5744 FALSE 8492 8876 TRUE 8492 TRUE 7798 TRUE 8489 8776 TRUE 8489 TRUE 7920 TRUE 8497 8876 FALSE 8497 TRUE 9254 TRUE 8479 8876 TRUE 8479 TRUE 9646 TRUE 8520 12972 TRUE 8520 TRUE 9262 FALSE 8554 15438 FALSE 8554 FALSE 8048 FALSE Juni 8580 8868 TRUE 8580 TRUE 7744 FALSE 8576 8364 TRUE 8576 TRUE 7792 TRUE

  8559 8860 TRUE 8559 TRUE 7795 TRUE 8558 11342 TRUE 8558 TRUE 7536 TRUE 8557 9004 FALSE 8557 TRUE 8048 TRUE 8560 8876 TRUE 8560 FALSE 7280 FALSE 8535 11342 TRUE 8535 FALSE 8750 TRUE 8552 15020 TRUE 8552 TRUE 1648 TRUE 8541 9294 TRUE 8541 TRUE 8238 TRUE 8492 11948 FALSE 8492 TRUE 9230 TRUE 8495 8868 TRUE 8495 TRUE 8238 FALSE 8488 9282 TRUE 8488 TRUE 10286 TRUE 8495 9294 FALSE 8495 TRUE 7280 FALSE 8480 8782 TRUE 8480 FALSE 8048 TRUE 8478 8940 TRUE 8478 TRUE 9262 TRUE 8486 9132 TRUE 8486 TRUE 3696 FALSE 8463 9230 TRUE 8463 FALSE 9278 TRUE 8494 9294 TRUE 8494 TRUE 9262 FALSE 8497 15020 FALSE 8497 TRUE 9390 TRUE 8494 8364 TRUE 8494 TRUE 7280 TRUE Mei 8505 11948 FALSE 8505 FALSE 9646 TRUE 8522 8864 TRUE 8522 TRUE 5744 FALSE

  8533 9294 TRUE 8533 TRUE 9262 TRUE 8541 13390 FALSE 8541 TRUE 9262 FALSE 8525 9678 TRUE 8525 TRUE 9326 TRUE 8518 8876 TRUE 8518 TRUE 13358 TRUE 8492 8776 TRUE 8492 FALSE 8238 TRUE 8501 8976 TRUE 8501 FALSE 9774 TRUE

  8510 9326 FALSE 8510 TRUE 7796 FALSE 8512 8364 TRUE 8512 TRUE 8238 TRUE 8493 9550 FALSE 8493 FALSE 9254 TRUE 8503 8876 TRUE 8503 FALSE 8238 FALSE 8510 13390 TRUE 8510 TRUE 4720 FALSE 8505 8892 TRUE 8505 TRUE 9258 TRUE 8534 9132 TRUE 8534 TRUE 9262 TRUE 8523 9294 TRUE 8523 TRUE 6768 FALSE 8516 9284 TRUE 8516 TRUE 8750 TRUE 8511 9806 TRUE 8511 TRUE 9263 TRUE 8508 9294 FALSE 8508 FALSE 9278 TRUE 8531 8940 TRUE 8531 TRUE 7744 FALSE April 8550 9286 TRUE 8550 FALSE 9262 TRUE 8582 9302 FALSE 8582 TRUE 7792 FALSE

  8613 8872 TRUE 8613 TRUE 9262 TRUE 8585 9294 TRUE 8585 FALSE 7796 TRUE 8586 10924 FALSE 8586 TRUE 8750 TRUE 8614 8892 TRUE 8614 TRUE 9390 TRUE 8643 11342 TRUE 8643 TRUE 9518 TRUE 8627 9550 TRUE 8627 TRUE 9263 TRUE 8618 8884 TRUE 8618 FALSE 9262 TRUE 8618 8892 TRUE 8618 TRUE 7744 FALSE 8629 8894 TRUE 8629 TRUE 7792 TRUE 8623 9310 TRUE 8623 TRUE 7792 FALSE 8598 8876 TRUE 8598 TRUE 9294 TRUE 8613 9294 TRUE 8613 TRUE 9390 TRUE 8611 8782 TRUE 8611 TRUE 10030 TRUE 8608 10924 FALSE 8608 TRUE 9260 TRUE 8628 9422 FALSE 8628 TRUE 8176 FALSE 8633 8844 TRUE 8633 FALSE 1648 FALSE 8656 9326 TRUE 8656 FALSE 5744 TRUE 8665 12972 FALSE 8665 TRUE 7792 TRUE Maret 8671 8872 TRUE 8671 TRUE 9326 TRUE

  8668 9290 TRUE 8668 TRUE 8750 TRUE 8674 15020 TRUE 8674 TRUE 9254 TRUE 8664 9294 FALSE 8664 TRUE 7792 TRUE 8678 8782 TRUE 8678 TRUE 7856 TRUE 8677 9294 TRUE 8677 TRUE 9262 TRUE 8666 15020 FALSE 8666 TRUE 9774 TRUE 8707 10924 FALSE 8707 TRUE 10286 TRUE 8729 9100 TRUE 8729 FALSE 9326 FALSE 8749 9230 TRUE 8749 TRUE 9263 FALSE 8736 11948 TRUE 8736 FALSE 11310 TRUE 8729 9302 TRUE 8729 TRUE 9262 TRUE 8727 8892 FALSE 8727 TRUE 9390 TRUE 8740 8876 TRUE 8740 FALSE 7784 FALSE