Konsep Dasar Probabilitas

Statistika Dasar

1 Teorema Bayes

foto

Teorema Bayes adalah prinsip penting dalam probabilitas yang membantu memperbarui keyakinan tentang suatu hipotesis berdasarkan bukti baru yang ditemukan. Teorema ini dinamai dari Thomas Bayes, seorang matematikawan asal Inggris, dan sering digunakan untuk menghitung probabilitas bersyarat, yaitu peluang suatu peristiwa \(A\) terjadi dengan asumsi bahwa peristiwa \(B\) telah terjadi.

1.1 Rumus Teorema Bayes

\[ P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)} \]

Di mana: - \(P(A|B)\): Peluang bahwa \(A\) terjadi setelah mempertimbangkan \(B\) (probabilitas posterior). - \(P(B|A)\): Peluang bahwa \(B\) terjadi jika \(A\) benar (likelihood). - \(P(A)\): Peluang awal \(A\) terjadi sebelum mempertimbangkan bukti baru (prior). - \(P(B)\): Peluang bahwa \(B\) terjadi secara keseluruhan (evidence).

1.2 Penjelasan Komponen

  1. Prior (\(P(A)\)): Probabilitas awal atau kepercayaan awal mengenai suatu peristiwa \(A\).
  2. Likelihood (\(P(B|A)\)): Seberapa besar kemungkinan bukti \(B\) muncul jika peristiwa \(A\) benar.
  3. Evidence (\(P(B)\)): Probabilitas bahwa bukti \(B\) muncul tanpa memperhatikan hipotesis \(A\).
  4. Posterior (\(P(A|B)\)): Probabilitas yang telah diperbarui untuk hipotesis \(A\) setelah mempertimbangkan bukti \(B\).

1.3 Ilustrasi

Contoh Medis: Bayangkan ada sebuah tes yang digunakan untuk mendeteksi penyakit tertentu. - Probabilitas orang terkena penyakit adalah \(P(A) = 0.01\) (hanya 1% populasi). - Jika seseorang benar-benar sakit, probabilitas tes memberikan hasil positif adalah \(P(B|A) = 0.95\). - Probabilitas tes menunjukkan hasil positif secara keseluruhan (baik benar maupun salah) adalah \(P(B) = 0.05\).

Dengan Teorema Bayes, kita dapat menghitung peluang seseorang benar-benar sakit jika hasil tesnya positif (\(P(A|B)\)):

\[ P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)} = \frac{0.95 \cdot 0.01}{0.05} = 0.19 \]

Hasilnya menunjukkan bahwa meskipun tes menunjukkan positif, peluang seseorang benar-benar sakit hanya 19%.

1.4 Kegunaan Teorema Bayes

  1. Kedokteran: Menentukan kemungkinan penyakit berdasarkan hasil tes laboratorium.
  2. Kecerdasan Buatan: Digunakan dalam algoritma seperti Naive Bayes untuk klasifikasi data.
  3. Keamanan Sistem: Mendeteksi potensi ancaman berdasarkan data aktivitas mencurigakan.
  4. Bisnis dan Ekonomi: Memahami pola perilaku konsumen untuk perencanaan strategi pemasaran.
  5. Hukum dan Forensik: Memperbarui hipotesis tentang kejahatan berdasarkan bukti baru.

Teorema Bayes sangat bermanfaat dalam situasi di mana informasi baru terus tersedia dan keputusan harus dibuat meskipun ada ketidakpastian.

2 Studi Kasus 1

Untuk menghitung probabilitas bersyarat \(P(D = Yes \mid C = Low, P = Below)\) menggunakan Teorema Bayes, kita memerlukan data berikut:

2.1 Diketahui

  • Probabilitas produk cacat (P(D = Yes)) = 5%
  • Probabilitas produk tidak cacat (P(D = No)) = 95%
  • Probabilitas menggunakan komponen berkualitas rendah (P(C = Low)) = 30%
  • Probabilitas menggunakan komponen berkualitas tinggi (P(C = High)) = 70%
  • Probabilitas proses produksi di bawah standar (P(P = Below)) = 40%
  • Probabilitas proses produksi sesuai standar (P(P = Standard)) = 60%

2.2 Pengerjaan

Untuk menghitung probabilitas bahwa suatu produk akan cacat (D = Yes) dengan menggunakan Teorema Bayes, kita perlu memanfaatkan rumus berikut:

\[ P(D = Yes \mid C = Low, P = Below) = \frac{P(C = Low, P = Below \mid D = Yes) \cdot P(D = Yes)}{P(C = Low, P = Below)} \]

Di sini, kita sudah mengetahui beberapa probabilitas yang diberikan dalam data historis, tetapi untuk menghitung probabilitas bersyarat \(P(C = Low, P = Below \mid D = Yes)\), kita perlu melakukan asumsi atau mencari data lebih lanjut, seperti hubungan antara komponen dan proses produksi dengan status cacat produk.

Namun, berdasarkan data yang tersedia, kita akan mendekati perhitungan dengan asumsi bahwa probabilitas \(P(C = Low, P = Below \mid D = Yes)\) adalah hasil perkalian dari probabilitas masing-masing faktor (komponen berkualitas rendah dan proses produksi di bawah standar) tergantung pada cacat produk.

Berikut langkah-langkahnya:

  1. Langkah 1: Tentukan P(D = Yes)

Sudah diberikan bahwa \(P(D = Yes) = 5\% = 0.05\).

  1. Langkah 2: Tentukan P(C = Low) dan P(P = Below)

Diketahui bahwa:

  • \(P(C = Low) = 30\% = 0.30\)
  • \(P(P = Below) = 40\% = 0.40\)
  1. Langkah 3: Tentukan P(C = Low, P = Below D = Yes)

Di sini, kita perlu asumsi bahwa komponen berkualitas rendah dan proses produksi di bawah standar terjadi secara independen terhadap cacat produk, jadi kita bisa mengalikan probabilitas masing-masing:

\[ P(C = Low, P = Below \mid D = Yes) = P(C = Low \mid D = Yes) \cdot P(P = Below \mid D = Yes) \]

Namun, karena informasi tentang probabilitas bersyarat ini tidak diberikan, kita perlu anggap bahwa probabilitas penggunaan komponen dan proses produksi tertentu adalah sama, baik produk cacat atau tidak cacat. Dalam hal ini:

\[ P(C = Low, P = Below \mid D = Yes) = P(C = Low) \cdot P(P = Below) = 0.30 \cdot 0.40 = 0.12 \]

  1. Langkah 4: Tentukan P(C = Low, P = Below)

Untuk menghitung \(P(C = Low, P = Below)\), kita dapat menggunakan rumus total probabilitas:

\[ P(C = Low, P = Below) = P(C = Low, P = Below \mid D = Yes) \cdot P(D = Yes) + P(C = Low, P = Below \mid D = No) \cdot P(D = No) \]

Karena \(P(C = Low, P = Below \mid D = No)\) belum diberikan, kita asumsikan bahwa ini adalah produk yang tidak cacat dan komponen serta proses juga bersifat independen. Maka, kita dapat menyatakan:

\[ P(C = Low, P = Below) = 0.12 \cdot 0.05 + 0.30 \cdot 0.40 \cdot 0.95 \]

\[ P(C = Low, P = Below) = 0.006 + 0.114 = 0.12 \]

  1. Langkah 5: Hitung P(D = Yes C = Low, P = Below)

Sekarang kita dapat menghitung probabilitas menggunakan Teorema Bayes:

\[ P(D = Yes \mid C = Low, P = Below) = \frac{0.12 \cdot 0.05}{0.12} = 0.05 \]

Jadi, probabilitas bahwa produk akan cacat (D = Yes) dengan komponen berkualitas rendah dan proses produksi di bawah standar adalah 5%.

3 Studi Kasus 2

Untuk menghitung probabilitas bahwa suatu transaksi adalah penipuan \(F = \text{Fraud}\), diberikan bahwa transaksi dilakukan dari lokasi luar negeri, jumlah pembelian lebih dari $500, dan metode pembayaran menggunakan kartu kredit, kita akan menggunakan Teorema Bayes. Rumus yang digunakan adalah:

\[ P(F = \text{Fraud} \mid L = \text{Foreign}, A = \text{High}, M = \text{Credit Card}) = \frac{P(L = \text{Foreign}, A = \text{High}, M = \text{Credit Card} \mid F = \text{Fraud}) \cdot P(F = \text{Fraud})}{P(L = \text{Foreign}, A = \text{High}, M = \text{Credit Card})} \]

3.1 Langkah 1: Tentukan Nilai yang Diketahui

  • Probabilitas transaksi penipuan \(P(F = \text{Fraud}) = 1\% = 0.01\)
  • Probabilitas transaksi bukan penipuan \(P(F = \text{Not Fraud}) = 99\% = 0.99\)
  • Probabilitas lokasi luar negeri \(P(L = \text{Foreign}) = 20\% = 0.20\)
  • Probabilitas jumlah pembelian lebih dari $500 \(P(A = \text{High}) = 10\% = 0.10\)
  • Probabilitas menggunakan kartu kredit \(P(M = \text{Credit Card}) = 50\% = 0.50\)

3.2 Langkah 2: Asumsi dan Perhitungan

Sama seperti sebelumnya, kita dapat mengasumsikan bahwa lokasi transaksi, jumlah pembelian, dan metode pembayaran adalah faktor-faktor yang independen terhadap status penipuan (baik itu penipuan atau tidak). Oleh karena itu, kita dapat mengalikan probabilitas masing-masing fitur untuk menghitung probabilitas gabungan.

Probabilitas gabungan kondisi jika transaksi adalah penipuan:

\[ P(L = \text{Foreign}, A = \text{High}, M = \text{Credit Card} \mid F = \text{Fraud}) = P(L = \text{Foreign}) \cdot P(A = \text{High}) \cdot P(M = \text{Credit Card}) \]

\[ P(L = \text{Foreign}, A = \text{High}, M = \text{Credit Card} \mid F = \text{Fraud}) = 0.20 \cdot 0.10 \cdot 0.50 = 0.01 \]

Probabilitas gabungan kondisi untuk semua transaksi:

\[ P(L = \text{Foreign}, A = \text{High}, M = \text{Credit Card}) = P(L = \text{Foreign}) \cdot P(A = \text{High}) \cdot P(M = \text{Credit Card}) \]

\[ P(L = \text{Foreign}, A = \text{High}, M = \text{Credit Card}) = 0.20 \cdot 0.10 \cdot 0.50 = 0.01 \]

3.3 Langkah 3: Hitung Probabilitas dengan Teorema Bayes

Sekarang kita dapat menghitung \(P(F = \text{Fraud} \mid L = \text{Foreign}, A = \text{High}, M = \text{Credit Card})\):

\[ P(F = \text{Fraud} \mid L = \text{Foreign}, A = \text{High}, M = \text{Credit Card}) = \frac{0.01 \cdot 0.01}{0.01} = 0.01 \]

3.4 Hasil

Probabilitas bahwa suatu transaksi adalah penipuan, jika diketahui bahwa transaksi dilakukan dari lokasi luar negeri, jumlah pembelian lebih dari $500, dan metode pembayaran menggunakan kartu kredit, adalah 1%.

LS0tDQp0aXRsZTogIktvbnNlcCBEYXNhciBQcm9iYWJpbGl0YXMiDQpzdWJ0aXRsZTogIlN0YXRpc3Rpa2EgRGFzYXIiDQphdXRob3I6IA0KICAtICJDaGVsbG8gRnJoaW5vIE1pa2UgTSAoNTIyNDAwMzEpIg0KZGF0ZTogICJgciBmb3JtYXQoU3lzLkRhdGUoKSwgJyVCICVkLCAlWScpYCINCm91dHB1dDoNCiAgcm1kZm9ybWF0czo6cmVhZHRoZWRvd246ICAgIyBodHRwczovL2dpdGh1Yi5jb20vanViYS9ybWRmb3JtYXRzDQogICAgc2VsZl9jb250YWluZWQ6IHRydWUNCiAgICB0aHVtYm5haWxzOiB0cnVlDQogICAgbGlnaHRib3g6IHRydWUNCiAgICBnYWxsZXJ5OiB0cnVlDQogICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlDQogICAgbGliX2RpcjogbGlicw0KICAgIGRmX3ByaW50OiAicGFnZWQiDQogICAgY29kZV9mb2xkaW5nOiAic2hvdyINCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICANCi0tLQ0KDQo8c3R5bGU+DQogIGJvZHkgew0KICAgIHRleHQtYWxpZ246IGp1c3RpZnk7DQogICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7DQogICAgb3ZlcmZsb3cteDogYXV0bzsNCiAgfQ0KPC9zdHlsZT4NCg0KIyBUZW9yZW1hIEJheWVzDQoNCjxpbWcgaWQ9ImZvdG8tYXV0aG9yIiBzcmM9IkM6L1VzZXJzL1VTRVIvRG9jdW1lbnRzL1N0YXRzRGFzMTIvVG9tYXMgQmF5ZXMuamZpZiIgYWx0PSJmb3RvIiBzdHlsZT0id2lkdGg6MzAwcHg7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IGF1dG87Ij4NCg0KKipUZW9yZW1hIEJheWVzKiogYWRhbGFoIHByaW5zaXAgcGVudGluZyBkYWxhbSBwcm9iYWJpbGl0YXMgeWFuZyBtZW1iYW50dSBtZW1wZXJiYXJ1aSBrZXlha2luYW4gdGVudGFuZyBzdWF0dSBoaXBvdGVzaXMgYmVyZGFzYXJrYW4gYnVrdGkgYmFydSB5YW5nIGRpdGVtdWthbi4gVGVvcmVtYSBpbmkgZGluYW1haSBkYXJpIFRob21hcyBCYXllcywgc2VvcmFuZyBtYXRlbWF0aWthd2FuIGFzYWwgSW5nZ3JpcywgZGFuIHNlcmluZyBkaWd1bmFrYW4gdW50dWsgbWVuZ2hpdHVuZyBwcm9iYWJpbGl0YXMgYmVyc3lhcmF0LCB5YWl0dSBwZWx1YW5nIHN1YXR1IHBlcmlzdGl3YSBcKCBBIFwpIHRlcmphZGkgZGVuZ2FuIGFzdW1zaSBiYWh3YSBwZXJpc3Rpd2EgXCggQiBcKSB0ZWxhaCB0ZXJqYWRpLg0KDQojIyBSdW11cyBUZW9yZW1hIEJheWVzDQoNClxbDQpQKEF8QikgPSBcZnJhY3tQKEJ8QSkgXGNkb3QgUChBKX17UChCKX0NClxdDQoNCkRpIG1hbmE6DQotIFwoIFAoQXxCKSBcKTogUGVsdWFuZyBiYWh3YSBcKCBBIFwpIHRlcmphZGkgc2V0ZWxhaCBtZW1wZXJ0aW1iYW5na2FuIFwoIEIgXCkgKHByb2JhYmlsaXRhcyBwb3N0ZXJpb3IpLg0KLSBcKCBQKEJ8QSkgXCk6IFBlbHVhbmcgYmFod2EgXCggQiBcKSB0ZXJqYWRpIGppa2EgXCggQSBcKSBiZW5hciAobGlrZWxpaG9vZCkuDQotIFwoIFAoQSkgXCk6IFBlbHVhbmcgYXdhbCBcKCBBIFwpIHRlcmphZGkgc2ViZWx1bSBtZW1wZXJ0aW1iYW5na2FuIGJ1a3RpIGJhcnUgKHByaW9yKS4NCi0gXCggUChCKSBcKTogUGVsdWFuZyBiYWh3YSBcKCBCIFwpIHRlcmphZGkgc2VjYXJhIGtlc2VsdXJ1aGFuIChldmlkZW5jZSkuDQoNCiMjIFBlbmplbGFzYW4gS29tcG9uZW4NCjEuICoqUHJpb3IgKFwoIFAoQSkgXCkpKio6IFByb2JhYmlsaXRhcyBhd2FsIGF0YXUga2VwZXJjYXlhYW4gYXdhbCBtZW5nZW5haSBzdWF0dSBwZXJpc3Rpd2EgXCggQSBcKS4NCjIuICoqTGlrZWxpaG9vZCAoXCggUChCfEEpIFwpKSoqOiBTZWJlcmFwYSBiZXNhciBrZW11bmdraW5hbiBidWt0aSBcKCBCIFwpIG11bmN1bCBqaWthIHBlcmlzdGl3YSBcKCBBIFwpIGJlbmFyLg0KMy4gKipFdmlkZW5jZSAoXCggUChCKSBcKSkqKjogUHJvYmFiaWxpdGFzIGJhaHdhIGJ1a3RpIFwoIEIgXCkgbXVuY3VsIHRhbnBhIG1lbXBlcmhhdGlrYW4gaGlwb3Rlc2lzIFwoIEEgXCkuDQo0LiAqKlBvc3RlcmlvciAoXCggUChBfEIpIFwpKSoqOiBQcm9iYWJpbGl0YXMgeWFuZyB0ZWxhaCBkaXBlcmJhcnVpIHVudHVrIGhpcG90ZXNpcyBcKCBBIFwpIHNldGVsYWggbWVtcGVydGltYmFuZ2thbiBidWt0aSBcKCBCIFwpLg0KDQojIyBJbHVzdHJhc2kNCioqQ29udG9oIE1lZGlzOioqDQpCYXlhbmdrYW4gYWRhIHNlYnVhaCB0ZXMgeWFuZyBkaWd1bmFrYW4gdW50dWsgbWVuZGV0ZWtzaSBwZW55YWtpdCB0ZXJ0ZW50dS4NCi0gUHJvYmFiaWxpdGFzIG9yYW5nIHRlcmtlbmEgcGVueWFraXQgYWRhbGFoIFwoIFAoQSkgPSAwLjAxIFwpIChoYW55YSAxJSBwb3B1bGFzaSkuDQotIEppa2Egc2VzZW9yYW5nIGJlbmFyLWJlbmFyIHNha2l0LCBwcm9iYWJpbGl0YXMgdGVzIG1lbWJlcmlrYW4gaGFzaWwgcG9zaXRpZiBhZGFsYWggXCggUChCfEEpID0gMC45NSBcKS4NCi0gUHJvYmFiaWxpdGFzIHRlcyBtZW51bmp1a2thbiBoYXNpbCBwb3NpdGlmIHNlY2FyYSBrZXNlbHVydWhhbiAoYmFpayBiZW5hciBtYXVwdW4gc2FsYWgpIGFkYWxhaCBcKCBQKEIpID0gMC4wNSBcKS4NCg0KRGVuZ2FuIFRlb3JlbWEgQmF5ZXMsIGtpdGEgZGFwYXQgbWVuZ2hpdHVuZyBwZWx1YW5nIHNlc2VvcmFuZyBiZW5hci1iZW5hciBzYWtpdCBqaWthIGhhc2lsIHRlc255YSBwb3NpdGlmIChcKCBQKEF8QikgXCkpOg0KDQpcWw0KUChBfEIpID0gXGZyYWN7UChCfEEpIFxjZG90IFAoQSl9e1AoQil9IA0KPSBcZnJhY3swLjk1IFxjZG90IDAuMDF9ezAuMDV9IA0KPSAwLjE5DQpcXQ0KDQpIYXNpbG55YSBtZW51bmp1a2thbiBiYWh3YSBtZXNraXB1biB0ZXMgbWVudW5qdWtrYW4gcG9zaXRpZiwgcGVsdWFuZyBzZXNlb3JhbmcgYmVuYXItYmVuYXIgc2FraXQgaGFueWEgMTklLg0KDQojIyBLZWd1bmFhbiBUZW9yZW1hIEJheWVzDQoxLiAqKktlZG9rdGVyYW46KiogTWVuZW50dWthbiBrZW11bmdraW5hbiBwZW55YWtpdCBiZXJkYXNhcmthbiBoYXNpbCB0ZXMgbGFib3JhdG9yaXVtLg0KMi4gKipLZWNlcmRhc2FuIEJ1YXRhbjoqKiBEaWd1bmFrYW4gZGFsYW0gYWxnb3JpdG1hIHNlcGVydGkgTmFpdmUgQmF5ZXMgdW50dWsga2xhc2lmaWthc2kgZGF0YS4NCjMuICoqS2VhbWFuYW4gU2lzdGVtOioqIE1lbmRldGVrc2kgcG90ZW5zaSBhbmNhbWFuIGJlcmRhc2Fya2FuIGRhdGEgYWt0aXZpdGFzIG1lbmN1cmlnYWthbi4NCjQuICoqQmlzbmlzIGRhbiBFa29ub21pOioqIE1lbWFoYW1pIHBvbGEgcGVyaWxha3Uga29uc3VtZW4gdW50dWsgcGVyZW5jYW5hYW4gc3RyYXRlZ2kgcGVtYXNhcmFuLg0KNS4gKipIdWt1bSBkYW4gRm9yZW5zaWs6KiogTWVtcGVyYmFydWkgaGlwb3Rlc2lzIHRlbnRhbmcga2VqYWhhdGFuIGJlcmRhc2Fya2FuIGJ1a3RpIGJhcnUuDQoNClRlb3JlbWEgQmF5ZXMgc2FuZ2F0IGJlcm1hbmZhYXQgZGFsYW0gc2l0dWFzaSBkaSBtYW5hIGluZm9ybWFzaSBiYXJ1IHRlcnVzIHRlcnNlZGlhIGRhbiBrZXB1dHVzYW4gaGFydXMgZGlidWF0IG1lc2tpcHVuIGFkYSBrZXRpZGFrcGFzdGlhbi4NCg0KIyBTdHVkaSBLYXN1cyAxDQoNClVudHVrIG1lbmdoaXR1bmcgcHJvYmFiaWxpdGFzIGJlcnN5YXJhdCBcKCBQKEQgPSBZZXMgXG1pZCBDID0gTG93LCBQID0gQmVsb3cpIFwpIG1lbmdndW5ha2FuICoqVGVvcmVtYSBCYXllcyoqLCBraXRhIG1lbWVybHVrYW4gZGF0YSBiZXJpa3V0Og0KDQojIyBEaWtldGFodWkNCg0KLSAqKlByb2JhYmlsaXRhcyBwcm9kdWsgY2FjYXQgKFAoRCA9IFllcykpKiogPSA1JQ0KLSAqKlByb2JhYmlsaXRhcyBwcm9kdWsgdGlkYWsgY2FjYXQgKFAoRCA9IE5vKSkqKiA9IDk1JQ0KLSAqKlByb2JhYmlsaXRhcyBtZW5nZ3VuYWthbiBrb21wb25lbiBiZXJrdWFsaXRhcyByZW5kYWggKFAoQyA9IExvdykpKiogPSAzMCUNCi0gKipQcm9iYWJpbGl0YXMgbWVuZ2d1bmFrYW4ga29tcG9uZW4gYmVya3VhbGl0YXMgdGluZ2dpIChQKEMgPSBIaWdoKSkqKiA9IDcwJQ0KLSAqKlByb2JhYmlsaXRhcyBwcm9zZXMgcHJvZHVrc2kgZGkgYmF3YWggc3RhbmRhciAoUChQID0gQmVsb3cpKSoqID0gNDAlDQotICoqUHJvYmFiaWxpdGFzIHByb3NlcyBwcm9kdWtzaSBzZXN1YWkgc3RhbmRhciAoUChQID0gU3RhbmRhcmQpKSoqID0gNjAlDQoNCiMjIFBlbmdlcmphYW4NCg0KVW50dWsgbWVuZ2hpdHVuZyBwcm9iYWJpbGl0YXMgYmFod2Egc3VhdHUgcHJvZHVrIGFrYW4gY2FjYXQgKEQgPSBZZXMpIGRlbmdhbiBtZW5nZ3VuYWthbiAqKlRlb3JlbWEgQmF5ZXMqKiwga2l0YSBwZXJsdSBtZW1hbmZhYXRrYW4gcnVtdXMgYmVyaWt1dDoNCg0KXFsNClAoRCA9IFllcyBcbWlkIEMgPSBMb3csIFAgPSBCZWxvdykgPSBcZnJhY3tQKEMgPSBMb3csIFAgPSBCZWxvdyBcbWlkIEQgPSBZZXMpIFxjZG90IFAoRCA9IFllcyl9e1AoQyA9IExvdywgUCA9IEJlbG93KX0NClxdDQoNCkRpIHNpbmksIGtpdGEgc3VkYWggbWVuZ2V0YWh1aSBiZWJlcmFwYSBwcm9iYWJpbGl0YXMgeWFuZyBkaWJlcmlrYW4gZGFsYW0gZGF0YSBoaXN0b3JpcywgdGV0YXBpIHVudHVrIG1lbmdoaXR1bmcgcHJvYmFiaWxpdGFzIGJlcnN5YXJhdCBcKFAoQyA9IExvdywgUCA9IEJlbG93IFxtaWQgRCA9IFllcylcKSwga2l0YSBwZXJsdSBtZWxha3VrYW4gYXN1bXNpIGF0YXUgbWVuY2FyaSBkYXRhIGxlYmloIGxhbmp1dCwgc2VwZXJ0aSBodWJ1bmdhbiBhbnRhcmEga29tcG9uZW4gZGFuIHByb3NlcyBwcm9kdWtzaSBkZW5nYW4gc3RhdHVzIGNhY2F0IHByb2R1ay4gDQoNCk5hbXVuLCBiZXJkYXNhcmthbiBkYXRhIHlhbmcgdGVyc2VkaWEsIGtpdGEgYWthbiBtZW5kZWthdGkgcGVyaGl0dW5nYW4gZGVuZ2FuIGFzdW1zaSBiYWh3YSBwcm9iYWJpbGl0YXMgXChQKEMgPSBMb3csIFAgPSBCZWxvdyBcbWlkIEQgPSBZZXMpXCkgYWRhbGFoIGhhc2lsIHBlcmthbGlhbiBkYXJpIHByb2JhYmlsaXRhcyBtYXNpbmctbWFzaW5nIGZha3RvciAoa29tcG9uZW4gYmVya3VhbGl0YXMgcmVuZGFoIGRhbiBwcm9zZXMgcHJvZHVrc2kgZGkgYmF3YWggc3RhbmRhcikgKip0ZXJnYW50dW5nIHBhZGEgY2FjYXQgcHJvZHVrKiouDQoNCkJlcmlrdXQgbGFuZ2thaC1sYW5na2FobnlhOg0KDQoxLiAqKkxhbmdrYWggMTogVGVudHVrYW4gUChEID0gWWVzKSoqDQoNClN1ZGFoIGRpYmVyaWthbiBiYWh3YSBcKFAoRCA9IFllcykgPSA1XCUgPSAwLjA1XCkuDQoNCjIuICoqTGFuZ2thaCAyOiBUZW50dWthbiBQKEMgPSBMb3cpIGRhbiBQKFAgPSBCZWxvdykqKg0KDQpEaWtldGFodWkgYmFod2E6DQoNCi0gXChQKEMgPSBMb3cpID0gMzBcJSA9IDAuMzBcKQ0KLSBcKFAoUCA9IEJlbG93KSA9IDQwXCUgPSAwLjQwXCkNCg0KMy4gKipMYW5na2FoIDM6IFRlbnR1a2FuIFAoQyA9IExvdywgUCA9IEJlbG93IFxtaWQgRCA9IFllcykqKg0KDQpEaSBzaW5pLCBraXRhIHBlcmx1IGFzdW1zaSBiYWh3YSBrb21wb25lbiBiZXJrdWFsaXRhcyByZW5kYWggZGFuIHByb3NlcyBwcm9kdWtzaSBkaSBiYXdhaCBzdGFuZGFyIHRlcmphZGkgc2VjYXJhIGluZGVwZW5kZW4gdGVyaGFkYXAgY2FjYXQgcHJvZHVrLCBqYWRpIGtpdGEgYmlzYSBtZW5nYWxpa2FuIHByb2JhYmlsaXRhcyBtYXNpbmctbWFzaW5nOg0KDQpcWw0KUChDID0gTG93LCBQID0gQmVsb3cgXG1pZCBEID0gWWVzKSA9IFAoQyA9IExvdyBcbWlkIEQgPSBZZXMpIFxjZG90IFAoUCA9IEJlbG93IFxtaWQgRCA9IFllcykNClxdDQoNCk5hbXVuLCBrYXJlbmEgaW5mb3JtYXNpIHRlbnRhbmcgcHJvYmFiaWxpdGFzIGJlcnN5YXJhdCBpbmkgdGlkYWsgZGliZXJpa2FuLCBraXRhIHBlcmx1IGFuZ2dhcCBiYWh3YSBwcm9iYWJpbGl0YXMgcGVuZ2d1bmFhbiBrb21wb25lbiBkYW4gcHJvc2VzIHByb2R1a3NpIHRlcnRlbnR1IGFkYWxhaCBzYW1hLCBiYWlrIHByb2R1ayBjYWNhdCBhdGF1IHRpZGFrIGNhY2F0LiBEYWxhbSBoYWwgaW5pOg0KDQpcWw0KUChDID0gTG93LCBQID0gQmVsb3cgXG1pZCBEID0gWWVzKSA9IFAoQyA9IExvdykgXGNkb3QgUChQID0gQmVsb3cpID0gMC4zMCBcY2RvdCAwLjQwID0gMC4xMg0KXF0NCg0KNC4gKipMYW5na2FoIDQ6IFRlbnR1a2FuIFAoQyA9IExvdywgUCA9IEJlbG93KSoqDQoNClVudHVrIG1lbmdoaXR1bmcgXChQKEMgPSBMb3csIFAgPSBCZWxvdylcKSwga2l0YSBkYXBhdCBtZW5nZ3VuYWthbiBydW11cyB0b3RhbCBwcm9iYWJpbGl0YXM6DQoNClxbDQpQKEMgPSBMb3csIFAgPSBCZWxvdykgPSBQKEMgPSBMb3csIFAgPSBCZWxvdyBcbWlkIEQgPSBZZXMpIFxjZG90IFAoRCA9IFllcykgKyBQKEMgPSBMb3csIFAgPSBCZWxvdyBcbWlkIEQgPSBObykgXGNkb3QgUChEID0gTm8pDQpcXQ0KDQpLYXJlbmEgXChQKEMgPSBMb3csIFAgPSBCZWxvdyBcbWlkIEQgPSBObylcKSBiZWx1bSBkaWJlcmlrYW4sIGtpdGEgYXN1bXNpa2FuIGJhaHdhIGluaSBhZGFsYWggcHJvZHVrIHlhbmcgdGlkYWsgY2FjYXQgZGFuIGtvbXBvbmVuIHNlcnRhIHByb3NlcyBqdWdhIGJlcnNpZmF0IGluZGVwZW5kZW4uIE1ha2EsIGtpdGEgZGFwYXQgbWVueWF0YWthbjoNCg0KXFsNClAoQyA9IExvdywgUCA9IEJlbG93KSA9IDAuMTIgXGNkb3QgMC4wNSArIDAuMzAgXGNkb3QgMC40MCBcY2RvdCAwLjk1DQpcXQ0KDQpcWw0KUChDID0gTG93LCBQID0gQmVsb3cpID0gMC4wMDYgKyAwLjExNCA9IDAuMTINClxdDQoNCjUuICoqTGFuZ2thaCA1OiBIaXR1bmcgUChEID0gWWVzIFxtaWQgQyA9IExvdywgUCA9IEJlbG93KSoqDQoNClNla2FyYW5nIGtpdGEgZGFwYXQgbWVuZ2hpdHVuZyBwcm9iYWJpbGl0YXMgbWVuZ2d1bmFrYW4gVGVvcmVtYSBCYXllczoNCg0KXFsNClAoRCA9IFllcyBcbWlkIEMgPSBMb3csIFAgPSBCZWxvdykgPSBcZnJhY3swLjEyIFxjZG90IDAuMDV9ezAuMTJ9ID0gMC4wNQ0KXF0NCg0KSmFkaSwgcHJvYmFiaWxpdGFzIGJhaHdhIHByb2R1ayBha2FuIGNhY2F0IChEID0gWWVzKSBkZW5nYW4ga29tcG9uZW4gYmVya3VhbGl0YXMgcmVuZGFoIGRhbiBwcm9zZXMgcHJvZHVrc2kgZGkgYmF3YWggc3RhbmRhciBhZGFsYWggKio1JSoqLg0KDQojIFN0dWRpIEthc3VzIDINCg0KVW50dWsgbWVuZ2hpdHVuZyBwcm9iYWJpbGl0YXMgYmFod2Egc3VhdHUgdHJhbnNha3NpIGFkYWxhaCBwZW5pcHVhbiBcKCBGID0gXHRleHR7RnJhdWR9IFwpLCBkaWJlcmlrYW4gYmFod2EgdHJhbnNha3NpIGRpbGFrdWthbiBkYXJpIGxva2FzaSBsdWFyIG5lZ2VyaSwganVtbGFoIHBlbWJlbGlhbiBsZWJpaCBkYXJpICQ1MDAsIGRhbiBtZXRvZGUgcGVtYmF5YXJhbiBtZW5nZ3VuYWthbiBrYXJ0dSBrcmVkaXQsIGtpdGEgYWthbiBtZW5nZ3VuYWthbiAqKlRlb3JlbWEgQmF5ZXMqKi4gUnVtdXMgeWFuZyBkaWd1bmFrYW4gYWRhbGFoOg0KDQpcWw0KUChGID0gXHRleHR7RnJhdWR9IFxtaWQgTCA9IFx0ZXh0e0ZvcmVpZ259LCBBID0gXHRleHR7SGlnaH0sIE0gPSBcdGV4dHtDcmVkaXQgQ2FyZH0pID0gXGZyYWN7UChMID0gXHRleHR7Rm9yZWlnbn0sIEEgPSBcdGV4dHtIaWdofSwgTSA9IFx0ZXh0e0NyZWRpdCBDYXJkfSBcbWlkIEYgPSBcdGV4dHtGcmF1ZH0pIFxjZG90IFAoRiA9IFx0ZXh0e0ZyYXVkfSl9e1AoTCA9IFx0ZXh0e0ZvcmVpZ259LCBBID0gXHRleHR7SGlnaH0sIE0gPSBcdGV4dHtDcmVkaXQgQ2FyZH0pfQ0KXF0NCg0KIyMgTGFuZ2thaCAxOiBUZW50dWthbiBOaWxhaSB5YW5nIERpa2V0YWh1aQ0KLSAqKlByb2JhYmlsaXRhcyB0cmFuc2Frc2kgcGVuaXB1YW4qKiBcKCBQKEYgPSBcdGV4dHtGcmF1ZH0pID0gMVwlID0gMC4wMSBcKQ0KLSAqKlByb2JhYmlsaXRhcyB0cmFuc2Frc2kgYnVrYW4gcGVuaXB1YW4qKiBcKCBQKEYgPSBcdGV4dHtOb3QgRnJhdWR9KSA9IDk5XCUgPSAwLjk5IFwpDQotICoqUHJvYmFiaWxpdGFzIGxva2FzaSBsdWFyIG5lZ2VyaSoqIFwoIFAoTCA9IFx0ZXh0e0ZvcmVpZ259KSA9IDIwXCUgPSAwLjIwIFwpDQotICoqUHJvYmFiaWxpdGFzIGp1bWxhaCBwZW1iZWxpYW4gbGViaWggZGFyaSAkNTAwKiogXCggUChBID0gXHRleHR7SGlnaH0pID0gMTBcJSA9IDAuMTAgXCkNCi0gKipQcm9iYWJpbGl0YXMgbWVuZ2d1bmFrYW4ga2FydHUga3JlZGl0KiogXCggUChNID0gXHRleHR7Q3JlZGl0IENhcmR9KSA9IDUwXCUgPSAwLjUwIFwpDQoNCiMjIExhbmdrYWggMjogQXN1bXNpIGRhbiBQZXJoaXR1bmdhbg0KDQpTYW1hIHNlcGVydGkgc2ViZWx1bW55YSwga2l0YSBkYXBhdCBtZW5nYXN1bXNpa2FuIGJhaHdhIGxva2FzaSB0cmFuc2Frc2ksIGp1bWxhaCBwZW1iZWxpYW4sIGRhbiBtZXRvZGUgcGVtYmF5YXJhbiBhZGFsYWggZmFrdG9yLWZha3RvciB5YW5nIGluZGVwZW5kZW4gdGVyaGFkYXAgc3RhdHVzIHBlbmlwdWFuIChiYWlrIGl0dSBwZW5pcHVhbiBhdGF1IHRpZGFrKS4gT2xlaCBrYXJlbmEgaXR1LCBraXRhIGRhcGF0IG1lbmdhbGlrYW4gcHJvYmFiaWxpdGFzIG1hc2luZy1tYXNpbmcgZml0dXIgdW50dWsgbWVuZ2hpdHVuZyBwcm9iYWJpbGl0YXMgZ2FidW5nYW4uDQoNCioqUHJvYmFiaWxpdGFzIGdhYnVuZ2FuIGtvbmRpc2kgamlrYSB0cmFuc2Frc2kgYWRhbGFoIHBlbmlwdWFuKio6DQoNClxbDQpQKEwgPSBcdGV4dHtGb3JlaWdufSwgQSA9IFx0ZXh0e0hpZ2h9LCBNID0gXHRleHR7Q3JlZGl0IENhcmR9IFxtaWQgRiA9IFx0ZXh0e0ZyYXVkfSkgPSBQKEwgPSBcdGV4dHtGb3JlaWdufSkgXGNkb3QgUChBID0gXHRleHR7SGlnaH0pIFxjZG90IFAoTSA9IFx0ZXh0e0NyZWRpdCBDYXJkfSkNClxdDQoNClxbDQpQKEwgPSBcdGV4dHtGb3JlaWdufSwgQSA9IFx0ZXh0e0hpZ2h9LCBNID0gXHRleHR7Q3JlZGl0IENhcmR9IFxtaWQgRiA9IFx0ZXh0e0ZyYXVkfSkgPSAwLjIwIFxjZG90IDAuMTAgXGNkb3QgMC41MCA9IDAuMDENClxdDQoNCioqUHJvYmFiaWxpdGFzIGdhYnVuZ2FuIGtvbmRpc2kgdW50dWsgc2VtdWEgdHJhbnNha3NpKio6DQoNClxbDQpQKEwgPSBcdGV4dHtGb3JlaWdufSwgQSA9IFx0ZXh0e0hpZ2h9LCBNID0gXHRleHR7Q3JlZGl0IENhcmR9KSA9IFAoTCA9IFx0ZXh0e0ZvcmVpZ259KSBcY2RvdCBQKEEgPSBcdGV4dHtIaWdofSkgXGNkb3QgUChNID0gXHRleHR7Q3JlZGl0IENhcmR9KQ0KXF0NCg0KXFsNClAoTCA9IFx0ZXh0e0ZvcmVpZ259LCBBID0gXHRleHR7SGlnaH0sIE0gPSBcdGV4dHtDcmVkaXQgQ2FyZH0pID0gMC4yMCBcY2RvdCAwLjEwIFxjZG90IDAuNTAgPSAwLjAxDQpcXQ0KDQojIyBMYW5na2FoIDM6IEhpdHVuZyBQcm9iYWJpbGl0YXMgZGVuZ2FuIFRlb3JlbWEgQmF5ZXMNCg0KU2VrYXJhbmcga2l0YSBkYXBhdCBtZW5naGl0dW5nIFwoIFAoRiA9IFx0ZXh0e0ZyYXVkfSBcbWlkIEwgPSBcdGV4dHtGb3JlaWdufSwgQSA9IFx0ZXh0e0hpZ2h9LCBNID0gXHRleHR7Q3JlZGl0IENhcmR9KSBcKToNCg0KXFsNClAoRiA9IFx0ZXh0e0ZyYXVkfSBcbWlkIEwgPSBcdGV4dHtGb3JlaWdufSwgQSA9IFx0ZXh0e0hpZ2h9LCBNID0gXHRleHR7Q3JlZGl0IENhcmR9KSA9IFxmcmFjezAuMDEgXGNkb3QgMC4wMX17MC4wMX0gPSAwLjAxDQpcXQ0KDQojIyBIYXNpbA0KUHJvYmFiaWxpdGFzIGJhaHdhIHN1YXR1IHRyYW5zYWtzaSBhZGFsYWggcGVuaXB1YW4sIGppa2EgZGlrZXRhaHVpIGJhaHdhIHRyYW5zYWtzaSBkaWxha3VrYW4gZGFyaSBsb2thc2kgbHVhciBuZWdlcmksIGp1bWxhaCBwZW1iZWxpYW4gbGViaWggZGFyaSAkNTAwLCBkYW4gbWV0b2RlIHBlbWJheWFyYW4gbWVuZ2d1bmFrYW4ga2FydHUga3JlZGl0LCBhZGFsYWggKioxJSoqLg0K