
Penjelasan lengkap mengenai probabilitas,
Teorema Bayes, dan bagaimana keduanya saling
berkorelasi.
1. Probabilitas
Definisi
Probabilitas adalah ukuran kemungkinan terjadinya suatu peristiwa
dalam ruang sampel tertentu. Probabilitas dinyatakan dengan nilai antara
0 dan 1: - 0 berarti peristiwa tidak mungkin
terjadi. - 1 berarti peristiwa pasti
terjadi.
Dalam bentuk persentase, probabilitas sering dinyatakan antara 0% dan
100%.
Rumus Dasar Probabilitas
Jika \(S\) adalah ruang sampel dari
semua kemungkinan hasil dan \(A\)
adalah kejadian tertentu, maka probabilitas \(P(A)\) didefinisikan sebagai: \[
P(A) = \frac{\text{Jumlah kejadian dalam } A}{\text{Jumlah kejadian
dalam } S}
\]
Jenis Probabilitas
Probabilitas Marginal: Probabilitas suatu
kejadian tunggal tanpa mempertimbangkan kejadian lain.
Contoh: Probabilitas hujan hari ini, \(P(\text{Hujan})\).
Probabilitas Bersyarat: Probabilitas suatu
kejadian terjadi, diberikan informasi bahwa kejadian lain telah
terjadi.
Contoh: Probabilitas seseorang sakit flu jika ia demam, \(P(\text{Flu} \mid \text{Demam})\).
Probabilitas Gabungan: Probabilitas dua kejadian
terjadi bersama-sama.
Contoh: Probabilitas seseorang demam dan sakit flu, \(P(\text{Demam} \cap \text{Flu})\).
2. Teorema Bayes
Definisi
Teorema Bayes adalah aturan dalam probabilitas yang digunakan untuk
menghitung probabilitas bersyarat. Teorema ini memungkinkan kita untuk
memperbarui keyakinan awal terhadap suatu kejadian
berdasarkan informasi baru.
Rumus Teorema Bayes
\[
P(A \mid B) = \frac{P(B \mid A) \cdot P(A)}{P(B)}
\]
Di sini: - \(P(A \mid B)\):
Probabilitas kejadian \(A\) terjadi,
diberikan \(B\) telah terjadi
(probabilitas bersyarat). - \(P(B \mid A)\): Probabilitas kejadian \(B\) terjadi, diberikan \(A\) telah terjadi. - \(P(A)\): Probabilitas awal atau prior
kejadian \(A\) (probabilitas
marginal). - \(P(B)\):
Probabilitas awal atau prior kejadian \(B\) (probabilitas
marginal).
Cara Kerja
Teorema Bayes bekerja dengan memperbarui informasi:
1. Kita mulai dengan probabilitas awal (\(P(A)\)), yaitu keyakinan awal
terhadap kejadian \(A\). 2. Ketika ada
informasi baru (\(B\)), kita menghitung
seberapa besar informasi tersebut cocok dengan kejadian \(A\) (\(P(B \mid
A)\)). 3. Dengan menggunakan informasi ini, kita menghitung
probabilitas baru (\(P(A \mid
B)\)).
Aplikasi Teorema Bayes
- Deteksi Penipuan: Menentukan apakah transaksi
merupakan penipuan berdasarkan pola tertentu.
- Diagnosis Medis: Menghitung kemungkinan pasien
memiliki penyakit tertentu berdasarkan gejala.
- Klasifikasi dalam Pembelajaran Mesin: Misalnya,
algoritma Naïve Bayes dalam klasifikasi data.
3. Korelasi Antara Probabilitas dan Teorema
Bayes
Probabilitas Sebagai Dasar Teorema Bayes
Teorema Bayes adalah salah satu aplikasi tingkat lanjut dari
probabilitas. Probabilitas dasar (\(P(A)\), \(P(B)\), dan \(P(B
\mid A)\)) menjadi komponen utama dalam
menghitung probabilitas bersyarat (\(P(A \mid
B)\)).
Keterkaitan Utama
- Probabilitas Awal (\(P(A)\)): Teorema Bayes dimulai
dengan keyakinan awal kita tentang kejadian \(A\).
- Informasi Baru (\(P(B \mid
A)\)): Probabilitas bahwa informasi baru cocok dengan
kejadian \(A\) menjadi elemen penting
dalam memperbarui keyakinan.
- Probabilitas Bersyarat (\(P(A \mid
B)\)): Hasil akhir dari Teorema Bayes adalah
probabilitas bersyarat, yang mencerminkan keyakinan yang
diperbarui terhadap \(A\),
setelah mempertimbangkan \(B\).
Contoh
Misalkan: - Probabilitas awal seseorang sakit flu adalah 5% (\(P(\text{Flu}) = 0.05\)). - Jika seseorang
demam, 80% dari mereka biasanya sakit flu (\(P(\text{Demam} \mid \text{Flu}) = 0.8\)). -
Probabilitas seseorang demam secara umum adalah 10% (\(P(\text{Demam}) = 0.1\)).
Dengan Teorema Bayes: \[
P(\text{Flu} \mid \text{Demam}) = \frac{P(\text{Demam} \mid \text{Flu})
\cdot P(\text{Flu})}{P(\text{Demam})}
\] \[
P(\text{Flu} \mid \text{Demam}) = \frac{0.8 \cdot 0.05}{0.1} = 0.4
\text{ atau } 40\%
\]
Interpretasi: Jika seseorang demam, maka kemungkinan dia sakit flu
meningkat menjadi 40%.
Berdasarkan penjelasan diatas dapat disimpulkan bahwa:
- Probabilitas adalah dasar pengukuran kemungkinan
suatu kejadian, baik dalam konteks kejadian tunggal (marginal),
kombinasi kejadian (gabungan), atau kejadian yang bergantung pada
informasi lain (bersyarat).
- Teorema Bayes adalah alat untuk memperbarui
probabilitas dengan informasi baru, yang memungkinkan kita membuat
keputusan lebih cerdas berdasarkan data.
- Hubungan antara keduanya adalah fungsional dan tak
terpisahkan. Teorema Bayes menggunakan prinsip probabilitas
untuk memberikan jawaban yang lebih akurat dalam situasi dengan
ketidakpastian dan informasi tambahan.
Studi Kasus 1
Penerapan Probabilitas dalam Prediksi Kualitas Produk:
Masalah yang Ingin Diselesaikan
Perusahaan manufaktur menghadapi tantangan dalam memastikan kualitas
produk. Sebagai bagian dari evaluasi kualitas, mereka ingin mengetahui
seberapa besar kemungkinan produk cacat jika diketahui:
1. Komponen yang digunakan berkualitas rendah. 2.
Proses produksi dilakukan di bawah standar.
Apa yang Ingin Kita Cari?
Kita diminta menghitung probabilitas bahwa suatu produk cacat
(\(D = Yes\)) berdasarkan
informasi: - Komponen berkualitas rendah (\(C = Low\)). - Proses
produksi di bawah standar (\(P =
Below\)).
Dengan kata lain, kita mencari probabilitas
bersyarat: \[
P(D = Yes \mid C = Low, P = Below)
\]
Mengapa Menggunakan Teorema Bayes?
Teorema Bayes adalah alat yang sangat berguna untuk menghitung
probabilitas bersyarat. Dalam konteks ini, Teorema Bayes memungkinkan
kita untuk memperbarui probabilitas bahwa produk cacat (\(D = Yes\)) berdasarkan dua informasi
tambahan (\(C = Low\) dan \(P = Below\)).
Data yang Diberikan
Data historis perusahaan memberikan probabilitas dasar sebagai
berikut:
- Probabilitas produk cacat:
- \(P(D = Yes) = 5\%\) (5% dari semua
produk cacat).
- \(P(D = No) = 95\%\) (95% dari
semua produk tidak cacat).
- Probabilitas terkait komponen dan proses produksi:
- Untuk produk cacat (\(D =
Yes\)):
- 60% menggunakan komponen berkualitas rendah (\(P(C = Low \mid D = Yes) = 60\%\)).
- 70% diproduksi di bawah standar (\(P(P =
Below \mid D = Yes) = 70\%\)).
- Untuk produk tidak cacat (\(D =
No\)):
- 20% menggunakan komponen berkualitas rendah (\(P(C = Low \mid D = No) = 20\%\)).
- 30% diproduksi di bawah standar (\(P(P =
Below \mid D = No) = 30\%\)).
Langkah-Langkah Menggunakan Teorema Bayes
1. Rumus Teorema Bayes
Rumus utama Teorema Bayes untuk probabilitas bersyarat: \[
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)}
\]
Dalam rumus ini: - \(P(D = Yes \mid C =
Low, P = Below)\): Probabilitas produk cacat, jika diketahui
komponen berkualitas rendah dan proses produksi di bawah standar. -
\(P(C = Low, P = Below \mid D = Yes)\):
Probabilitas bahwa produk menggunakan komponen berkualitas rendah dan
proses produksi di bawah standar, jika produk cacat. - \(P(D = Yes)\): Probabilitas dasar bahwa
produk cacat. - \(P(C = Low, P =
Below)\): Probabilitas produk menggunakan komponen rendah dan
proses produksi di bawah standar secara keseluruhan.
2. Menghitung Komponen Rumus
a. Hitung \(P(C = Low, P = Below
\mid D = Yes)\)
\[
P(C = Low, P = Below \mid D = Yes) = P(C = Low \mid D = Yes) \cdot P(P =
Below \mid D = Yes)
\] Substitusi data: \[
P(C = Low, P = Below \mid D = Yes) = 60\% \cdot 70\% = 42\%
\]
b. Hitung \(P(C = Low, P = Below
\mid D = No)\)
\[
P(C = Low, P = Below \mid D = No) = P(C = Low \mid D = No) \cdot P(P =
Below \mid D = No)
\] Substitusi data: \[
P(C = Low, P = Below \mid D = No) = 20\% \cdot 30\% = 6\%
\]
c. Hitung \(P(C = Low, P =
Below)\)
Menggunakan hukum probabilitas total: \[
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)
\] Substitusi data: \[
P(C = Low, P = Below) = (42\% \cdot 5\%) + (6\% \cdot 95\%)
\] \[
P(C = Low, P = Below) = 2.1\% + 5.7\% = 7.8\%
\]
3. Hitung Probabilitas Bersyarat
Gunakan rumus Teorema Bayes: \[
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)}
\] Substitusi nilai: \[
P(D = Yes \mid C = Low, P = Below) = \frac{42\% \cdot 5\%}{7.8\%}
\] \[
P(D = Yes \mid C = Low, P = Below) = \frac{2.1\%}{7.8\%} \approx 26.92\%
\]
Kesimpulan
Dalam Studi Kasus 1, kita berhasil menggunakan
Teorema Bayes untuk menghitung probabilitas bersyarat
bahwa suatu produk akan cacat (\(D =
Yes\)), dengan informasi tambahan bahwa produk tersebut
menggunakan komponen berkualitas rendah (\(C = Low\)) dan diproduksi dengan
proses di bawah standar (\(P
= Below\)).
Hasil perhitungan menunjukkan bahwa probabilitas tersebut adalah
26.92%. Berikut adalah penjelasan lengkap untuk
menyimpulkan hasil ini:
1. Relevansi Teorema Bayes
Teorema Bayes merupakan alat yang sangat penting dalam pengambilan
keputusan berbasis data. Dengan menggunakan Teorema Bayes, kita dapat
menghitung probabilitas kondisi tertentu (\(D
= Yes\)) berdasarkan informasi baru (\(C = Low, P = Below\)) yang tersedia. Rumus
utama dari Teorema Bayes adalah: \[
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)}
\]
Rumus ini menggabungkan probabilitas awal (\(P(D = Yes)\)), probabilitas bersyarat
(\(P(C = Low, P = Below \mid D =
Yes)\)), dan probabilitas total (\(P(C
= Low, P = Below)\)) untuk memberikan probabilitas bersyarat yang
diperbarui (\(P(D = Yes \mid C = Low, P =
Below)\)).
2. Mengapa Probabilitas Tidak Tinggi?
Meskipun diketahui bahwa komponen berkualitas rendah
dan proses di bawah standar meningkatkan risiko cacat,
hasil akhirnya tetap 26.92% karena beberapa alasan: -
Hanya 5% dari semua produk yang cacat (\(P(D = Yes) = 5\%\)). Probabilitas dasar ini
membatasi hasil akhir. - Sebagian besar produk (\(95\%\)) tidak cacat (\(P(D = No)\)), sehingga kombinasi komponen
rendah dan proses buruk juga sering terjadi pada produk yang tidak
cacat.
3. Mengapa Hasil Ini Penting?
Probabilitas bersyarat ini sangat penting dalam pengambilan
keputusan: - Perusahaan dapat menggunakan hasil ini untuk fokus pada
proses inspeksi dan pengawasan
komponen. Jika produk menggunakan komponen berkualitas rendah
dan prosesnya di bawah standar, ada risiko lebih tinggi bahwa produk
akan cacat. - Namun, probabilitas 26.92% menunjukkan bahwa
kombinasi ini tidak selalu menghasilkan produk cacat,
sehingga keputusan untuk memeriksa seluruh produk mungkin tidak efisien
secara biaya.
4. Bagaimana Teorema Bayes Membantu di Dunia
Nyata?
- Teorema Bayes digunakan secara luas dalam analisis
risiko, deteksi penipuan, diagnosis medis, dan pemeliharaan
prediktif.
- Dalam konteks ini, Teorema Bayes memungkinkan perusahaan
memanfaatkan data historis untuk memperkirakan risiko dengan lebih
akurat.
- Kombinasi probabilitas bersyarat \(P(C =
Low, P = Below \mid D = Yes)\) dan probabilitas dasar \(P(D = Yes)\) mencerminkan hubungan antara
penyebab (komponen dan proses) dengan
efek (cacat produk).
5. Bagaimana Probabilitas Bisa Berubah?
Jika asumsi data berubah, hasil akhirnya juga akan berbeda. Misalnya:
- Jika \(P(D = Yes)\) meningkat menjadi
10%, hasil akhir akan lebih tinggi. - Jika produk cacat hanya sebagian
kecil yang menggunakan komponen rendah atau proses buruk, probabilitas
bersyarat akan lebih rendah.
6. Nilai Praktis dari Probabilitas 26.92%
Hasil ini menunjukkan bahwa ada risiko signifikan (sekitar 27%) bahwa
produk akan cacat dalam kondisi yang disebutkan. Dengan informasi ini,
perusahaan dapat: - Mengurangi risiko dengan
meningkatkan kualitas komponen dan standar produksi. -
Mengalokasikan sumber daya untuk inspeksi pada produk
dengan risiko lebih tinggi.
Kesimpulan Akhir:
Teorema Bayes memungkinkan kita untuk memperbarui keyakinan awal (\(P(D = Yes)\)) dengan informasi tambahan
(\(C = Low\) dan \(P = Below\)). Hasil ini memberikan wawasan
yang mendalam tentang risiko cacat produk, membantu perusahaan membuat
keputusan yang lebih baik untuk mengoptimalkan kualitas dan
efisiensi.
Studi Kasus 2
Penerapan Probabilitas dalam Deteksi Penipuan
Transaksi:
Sebuah perusahaan e-commerce ingin mendeteksi transaksi yang
berpotensi penipuan. Berdasarkan data historis:
Hanya 1% transaksi yang merupakan penipuan
(\(P(F = Fraud) = 1\%\)).
99% transaksi adalah transaksi normal (\(P(F = Not Fraud) = 99\%\)).
Fitur tambahan untuk mendeteksi penipuan transaksi:
- Lokasi transaksi (\(L\)): Apakah
dilakukan di luar negeri (Foreign). - Jumlah pembelian (\(A\)): Apakah lebih dari $500 (High). -
Metode pembayaran (\(M\)): Menggunakan
kartu kredit (Credit Card).
Dari data historis: - Untuk transaksi
penipuan (\(F =
Fraud\)): - 60% dilakukan di luar negeri (\(P(L = Foreign \mid F = Fraud) = 60\%\)). -
70% memiliki jumlah pembelian lebih dari $500 (\(P(A = High \mid F = Fraud) = 70\%\)). - 80%
menggunakan kartu kredit (\(P(M = Credit Card
\mid F = Fraud) = 80\%\)). - Untuk transaksi normal
(\(F = Not Fraud\)): - 20%
dilakukan di luar negeri (\(P(L = Foreign \mid
F = Not Fraud) = 20\%\)). - 10% memiliki jumlah pembelian lebih
dari $500 (\(P(A = High \mid F = Not Fraud) =
10\%\)). - 50% menggunakan kartu kredit (\(P(M = Credit Card \mid F = Not Fraud) =
50\%\)).
Tujuan: Hitung probabilitas bahwa transaksi
merupakan penipuan (\(F =
Fraud\)) jika diketahui bahwa transaksi:
1. Dilakukan di luar negeri (\(L =
Foreign\)).
2. Jumlah pembelian lebih dari $500 (\(A =
High\)).
3. Menggunakan kartu kredit (\(M = Credit
Card\)).
Langkah-Langkah
1. Gunakan Rumus Teorema Bayes
\[
P(F = Fraud \mid L = Foreign, A = High, M = Credit Card) = \frac{P(L, A,
M \mid F = Fraud) \cdot P(F = Fraud)}{P(L, A, M)}
\]
2. Data Awal dalam Persentase
- Probabilitas transaksi penipuan:
- \(P(F = Fraud) = 1\%\)
- \(P(F = Not Fraud) = 99\%\)
- Probabilitas fitur untuk transaksi penipuan:
- \(P(L = Foreign \mid F = Fraud) =
60\%\)
- \(P(A = High \mid F = Fraud) =
70\%\)
- \(P(M = Credit Card \mid F = Fraud) =
80\%\)
- Probabilitas fitur untuk transaksi normal:
- \(P(L = Foreign \mid F = Not Fraud) =
20\%\)
- \(P(A = High \mid F = Not Fraud) =
10\%\)
- \(P(M = Credit Card \mid F = Not Fraud) =
50\%\)
3. Hitung Komponen Rumus
a. Hitung \(P(L, A, M \mid F =
Fraud)\):
Dengan asumsi independensi antar fitur: \[
P(L, A, M \mid F = Fraud) = P(L = Foreign \mid F = Fraud) \cdot P(A =
High \mid F = Fraud) \cdot P(M = Credit Card \mid F = Fraud)
\] Substitusi nilai (persentase): \[
P(L, A, M \mid F = Fraud) = 60\% \cdot 70\% \cdot 80\% = 33.6\%
\]
b. Hitung \(P(L, A, M \mid F = Not
Fraud)\):
Dengan asumsi independensi antar fitur: \[
P(L, A, M \mid F = Not Fraud) = P(L = Foreign \mid F = Not Fraud) \cdot
P(A = High \mid F = Not Fraud) \cdot P(M = Credit Card \mid F = Not
Fraud)
\] Substitusi nilai: \[
P(L, A, M \mid F = Not Fraud) = 20\% \cdot 10\% \cdot 50\% = 1\%
\]
c. Hitung \(P(L, A,
M)\):
Menggunakan hukum probabilitas total: \[
P(L, A, M) = P(L, A, M \mid F = Fraud) \cdot P(F = Fraud) + P(L, A, M
\mid F = Not Fraud) \cdot P(F = Not Fraud)
\] Substitusi nilai (persentase): \[
P(L, A, M) = (33.6\% \cdot 1\%) + (1\% \cdot 99\%)
\] \[
P(L, A, M) = 0.336\% + 0.99\% = 1.326\%
\]
4. Hitung Probabilitas Bersyarat
Gunakan rumus: \[
P(F = Fraud \mid L = Foreign, A = High, M = Credit Card) = \frac{P(L, A,
M \mid F = Fraud) \cdot P(F = Fraud)}{P(L, A, M)}
\] Substitusi nilai (persentase): \[
P(F = Fraud \mid L = Foreign, A = High, M = Credit Card) = \frac{33.6\%
\cdot 1\%}{1.326\%}
\] \[
P(F = Fraud \mid L = Foreign, A = High, M = Credit Card) =
\frac{0.336\%}{1.326\%} \approx 25.34\%
\]
Kesimpulan
Dalam Studi Kasus 2, kita berhasil menggunakan
Teorema Bayes untuk menghitung probabilitas bersyarat
bahwa suatu transaksi adalah penipuan (\(F =
Fraud\)), dengan informasi tambahan bahwa:
- Transaksi dilakukan di luar negeri (\(L =
Foreign\)).
- Jumlah pembelian lebih dari $500 (\(A =
High\)).
- Metode pembayaran menggunakan kartu kredit (\(M = Credit Card\)).
Hasil perhitungan menunjukkan bahwa probabilitas tersebut adalah
25.34%. Berikut adalah penjelasan lengkap untuk
menyimpulkan hasil ini:
1. Relevansi Teorema Bayes
Teorema Bayes adalah alat yang sangat penting dalam analisis risiko
dan deteksi anomali. Dalam konteks ini, Teorema Bayes memungkinkan kita
untuk memperbarui probabilitas awal (\(P(F =
Fraud)\)) berdasarkan informasi tambahan (\(L = Foreign, A = High, M = Credit Card\)).
Rumus utamanya adalah: \[
P(F = Fraud \mid L = Foreign, A = High, M = Credit Card) = \frac{P(L, A,
M \mid F = Fraud) \cdot P(F = Fraud)}{P(L, A, M)}
\]
Rumus ini menggabungkan probabilitas awal, probabilitas bersyarat,
dan probabilitas total untuk memberikan prediksi berbasis data yang
lebih akurat.
2. Mengapa Probabilitas Tidak Tinggi?
Meskipun ketiga fitur (lokasi, jumlah pembelian, dan metode
pembayaran) meningkatkan kemungkinan penipuan, hasil akhirnya hanya
25.34%. Hal ini disebabkan oleh: - Probabilitas dasar
bahwa suatu transaksi adalah penipuan (\(P(F =
Fraud)\)) sangat kecil, yaitu hanya 1%. -
Sebagian besar transaksi (\(99\%\))
bukan penipuan, sehingga fitur seperti lokasi luar negeri, jumlah
pembelian tinggi, dan penggunaan kartu kredit juga sering terjadi pada
transaksi yang bukan penipuan.
3. Mengapa Hasil Ini Penting?
Probabilitas bersyarat ini sangat penting dalam pengambilan
keputusan: - Perusahaan dapat memprioritaskan pemeriksaan pada transaksi
dengan fitur seperti ini karena memiliki risiko lebih tinggi
dibandingkan transaksi biasa. - Namun, probabilitas
25.34% menunjukkan bahwa tidak semua transaksi dengan
fitur ini adalah penipuan, sehingga pemeriksaan secara selektif lebih
efisien dibandingkan memeriksa seluruh transaksi.
4. Bagaimana Teorema Bayes Membantu di Dunia
Nyata?
- Teorema Bayes digunakan secara luas dalam deteksi
penipuan, analisis risiko, dan pengambilan keputusan berbasis data.
- Dalam konteks ini, Teorema Bayes memungkinkan perusahaan untuk
memperkirakan risiko transaksi berdasarkan data historis yang ada.
- Probabilitas bersyarat \(P(L, A, M \mid F
= Fraud)\) dan \(P(F = Fraud)\)
mencerminkan hubungan antara penyebab (fitur transaksi)
dengan efek (penipuan).
5. Bagaimana Probabilitas Bisa Berubah?
Jika asumsi data berubah, hasil akhirnya juga akan berubah. Contoh: -
Jika \(P(F = Fraud)\) meningkat menjadi
5%, probabilitas akhir juga akan meningkat. - Jika transaksi penipuan
memiliki pola baru yang berbeda dari data historis (misalnya, lebih
jarang menggunakan kartu kredit), probabilitas bersyarat akan
berubah.
6. Nilai Praktis dari Probabilitas 25.34%
Hasil ini menunjukkan bahwa ada risiko signifikan bahwa transaksi
dengan fitur ini adalah penipuan. Dengan informasi ini, perusahaan
dapat: - Meningkatkan efisiensi pemeriksaan dengan
fokus pada transaksi dengan risiko tinggi. - Mengurangi biaya
operasional dengan menghindari pemeriksaan transaksi berisiko
rendah.
Kesimpulan Akhir:
Teorema Bayes memungkinkan kita untuk memperbarui keyakinan awal (\(P(F = Fraud)\)) dengan informasi tambahan
(\(L = Foreign, A = High, M = Credit
Card\)). Hasil ini memberikan wawasan mendalam tentang risiko
transaksi, membantu perusahaan mendeteksi penipuan secara lebih efisien,
dan meningkatkan akurasi pengambilan keputusan berbasis data.
Referensi
Siregar, B. (2024). Konsep dasar probabilitas. Diakses dari
https://bookdown.org/dsciencelabs/statistika_dasar/_book/Konsep_Dasar_Probabilitas.html
LOPEZ, J. (2022). Epistemologi, Probabilitas, dan Sains.
Pengantar Filsafat: Epistemologi.
Handayani, R., & Purnomo, A. S. (2024). Penerapan Teorema
Bayes Untuk Mendiagnosa Hama dan Penyakit Pada Tanaman Kelapa Sawit.
JEKIN-Jurnal Teknik Informatika, 4(2), 287-299.
Syamsul, M. (2022). Bab 2 Probabilitas. Statistik Kesehatan:
Teori dan Aplikasi, 10.
Marliana, R. R., & Stat, M. (2016). Statistika dan
Probabilitas. Retrieved April, 1, 2023.
LS0tDQp0aXRsZTogIlR1Z2FzIEluZGl2aWR1Ig0Kc3VidGl0bGU6ICJQcm9iYWJpbGl0YXMiDQphdXRob3I6ICJPbGl2aWEgTWVpbGluZGEgRGF2dGluIFBlc2lyZXJvbiINCmRhdGU6ICAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6DQogIHJtZGZvcm1hdHM6OnJlYWR0aGVkb3duOiAgICMgaHR0cHM6Ly9naXRodWIuY29tL2p1YmEvcm1kZm9ybWF0cw0KICAgIHNlbGZfY29udGFpbmVkOiB0cnVlDQogICAgdGh1bWJuYWlsczogdHJ1ZQ0KICAgIGxpZ2h0Ym94OiB0cnVlDQogICAgZ2FsbGVyeTogdHJ1ZQ0KICAgIGxpYl9kaXI6IGxpYnMNCiAgICBkZl9wcmludDogInBhZ2VkIg0KICAgIGNvZGVfZm9sZGluZzogInNob3ciDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgY3NzOiAic3R5bGUuY3NzIg0KLS0tDQoNCjxpbWcgc3JjPSJMSUJJLmpwZyIgd2lkdGg9IjMwMCIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IGF1dG87IiBhbHQ9IkZvdG8gRGlyaSI+DQoNCiMgUGVuamVsYXNhbiBsZW5na2FwIG1lbmdlbmFpICoqcHJvYmFiaWxpdGFzKiosICoqVGVvcmVtYSBCYXllcyoqLCBkYW4gYmFnYWltYW5hIGtlZHVhbnlhIHNhbGluZyBiZXJrb3JlbGFzaS4NCg0KLS0tDQoNCiMjICoqMS4gUHJvYmFiaWxpdGFzKioNCg0KIyMjICoqRGVmaW5pc2kqKg0KUHJvYmFiaWxpdGFzIGFkYWxhaCB1a3VyYW4ga2VtdW5na2luYW4gdGVyamFkaW55YSBzdWF0dSBwZXJpc3Rpd2EgZGFsYW0gcnVhbmcgc2FtcGVsIHRlcnRlbnR1LiBQcm9iYWJpbGl0YXMgZGlueWF0YWthbiBkZW5nYW4gbmlsYWkgYW50YXJhIDAgZGFuIDE6DQotICoqMCoqIGJlcmFydGkgcGVyaXN0aXdhICoqdGlkYWsgbXVuZ2tpbiB0ZXJqYWRpKiouDQotICoqMSoqIGJlcmFydGkgcGVyaXN0aXdhICoqcGFzdGkgdGVyamFkaSoqLg0KDQpEYWxhbSBiZW50dWsgcGVyc2VudGFzZSwgcHJvYmFiaWxpdGFzIHNlcmluZyBkaW55YXRha2FuIGFudGFyYSAwJSBkYW4gMTAwJS4NCg0KIyMjICoqUnVtdXMgRGFzYXIgUHJvYmFiaWxpdGFzKioNCkppa2EgXChTXCkgYWRhbGFoIHJ1YW5nIHNhbXBlbCBkYXJpIHNlbXVhIGtlbXVuZ2tpbmFuIGhhc2lsIGRhbiBcKEFcKSBhZGFsYWgga2VqYWRpYW4gdGVydGVudHUsIG1ha2EgcHJvYmFiaWxpdGFzIFwoUChBKVwpIGRpZGVmaW5pc2lrYW4gc2ViYWdhaToNClxbDQpQKEEpID0gXGZyYWN7XHRleHR7SnVtbGFoIGtlamFkaWFuIGRhbGFtIH0gQX17XHRleHR7SnVtbGFoIGtlamFkaWFuIGRhbGFtIH0gU30NClxdDQoNCiMjIyAqKkplbmlzIFByb2JhYmlsaXRhcyoqDQoxLiAqKlByb2JhYmlsaXRhcyBNYXJnaW5hbCoqOiBQcm9iYWJpbGl0YXMgc3VhdHUga2VqYWRpYW4gdHVuZ2dhbCB0YW5wYSBtZW1wZXJ0aW1iYW5na2FuIGtlamFkaWFuIGxhaW4uICANCiAgIENvbnRvaDogUHJvYmFiaWxpdGFzIGh1amFuIGhhcmkgaW5pLCBcKFAoXHRleHR7SHVqYW59KVwpLg0KDQoyLiAqKlByb2JhYmlsaXRhcyBCZXJzeWFyYXQqKjogUHJvYmFiaWxpdGFzIHN1YXR1IGtlamFkaWFuIHRlcmphZGksIGRpYmVyaWthbiBpbmZvcm1hc2kgYmFod2Ega2VqYWRpYW4gbGFpbiB0ZWxhaCB0ZXJqYWRpLiAgDQogICBDb250b2g6IFByb2JhYmlsaXRhcyBzZXNlb3Jhbmcgc2FraXQgZmx1IGppa2EgaWEgZGVtYW0sIFwoUChcdGV4dHtGbHV9IFxtaWQgXHRleHR7RGVtYW19KVwpLg0KDQozLiAqKlByb2JhYmlsaXRhcyBHYWJ1bmdhbioqOiBQcm9iYWJpbGl0YXMgZHVhIGtlamFkaWFuIHRlcmphZGkgYmVyc2FtYS1zYW1hLiAgDQogICBDb250b2g6IFByb2JhYmlsaXRhcyBzZXNlb3JhbmcgZGVtYW0gZGFuIHNha2l0IGZsdSwgXChQKFx0ZXh0e0RlbWFtfSBcY2FwIFx0ZXh0e0ZsdX0pXCkuDQoNCi0tLQ0KDQojIyAqKjIuIFRlb3JlbWEgQmF5ZXMqKg0KDQojIyMgKipEZWZpbmlzaSoqDQpUZW9yZW1hIEJheWVzIGFkYWxhaCBhdHVyYW4gZGFsYW0gcHJvYmFiaWxpdGFzIHlhbmcgZGlndW5ha2FuIHVudHVrIG1lbmdoaXR1bmcgcHJvYmFiaWxpdGFzIGJlcnN5YXJhdC4gVGVvcmVtYSBpbmkgbWVtdW5na2lua2FuIGtpdGEgdW50dWsgKiptZW1wZXJiYXJ1aSBrZXlha2luYW4gYXdhbCoqIHRlcmhhZGFwIHN1YXR1IGtlamFkaWFuIGJlcmRhc2Fya2FuIGluZm9ybWFzaSBiYXJ1Lg0KDQojIyMgKipSdW11cyBUZW9yZW1hIEJheWVzKioNClxbDQpQKEEgXG1pZCBCKSA9IFxmcmFje1AoQiBcbWlkIEEpIFxjZG90IFAoQSl9e1AoQil9DQpcXQ0KDQpEaSBzaW5pOg0KLSBcKFAoQSBcbWlkIEIpXCk6IFByb2JhYmlsaXRhcyBrZWphZGlhbiBcKEFcKSB0ZXJqYWRpLCBkaWJlcmlrYW4gXChCXCkgdGVsYWggdGVyamFkaSAoKipwcm9iYWJpbGl0YXMgYmVyc3lhcmF0KiopLg0KLSBcKFAoQiBcbWlkIEEpXCk6IFByb2JhYmlsaXRhcyBrZWphZGlhbiBcKEJcKSB0ZXJqYWRpLCBkaWJlcmlrYW4gXChBXCkgdGVsYWggdGVyamFkaS4NCi0gXChQKEEpXCk6IFByb2JhYmlsaXRhcyBhd2FsIGF0YXUgcHJpb3Iga2VqYWRpYW4gXChBXCkgKCoqcHJvYmFiaWxpdGFzIG1hcmdpbmFsKiopLg0KLSBcKFAoQilcKTogUHJvYmFiaWxpdGFzIGF3YWwgYXRhdSBwcmlvciBrZWphZGlhbiBcKEJcKSAoKipwcm9iYWJpbGl0YXMgbWFyZ2luYWwqKikuDQoNCiMjIyAqKkNhcmEgS2VyamEqKg0KVGVvcmVtYSBCYXllcyBiZWtlcmphIGRlbmdhbiAqKm1lbXBlcmJhcnVpIGluZm9ybWFzaSoqOg0KMS4gS2l0YSBtdWxhaSBkZW5nYW4gKipwcm9iYWJpbGl0YXMgYXdhbCAoXChQKEEpXCkpKiosIHlhaXR1IGtleWFraW5hbiBhd2FsIHRlcmhhZGFwIGtlamFkaWFuIFwoQVwpLg0KMi4gS2V0aWthIGFkYSBpbmZvcm1hc2kgYmFydSAoXChCXCkpLCBraXRhIG1lbmdoaXR1bmcgc2ViZXJhcGEgYmVzYXIgaW5mb3JtYXNpIHRlcnNlYnV0IGNvY29rIGRlbmdhbiBrZWphZGlhbiBcKEFcKSAoXChQKEIgXG1pZCBBKVwpKS4NCjMuIERlbmdhbiBtZW5nZ3VuYWthbiBpbmZvcm1hc2kgaW5pLCBraXRhIG1lbmdoaXR1bmcgcHJvYmFiaWxpdGFzIGJhcnUgKFwoUChBIFxtaWQgQilcKSkuDQoNCiMjIyAqKkFwbGlrYXNpIFRlb3JlbWEgQmF5ZXMqKg0KMS4gKipEZXRla3NpIFBlbmlwdWFuKio6IE1lbmVudHVrYW4gYXBha2FoIHRyYW5zYWtzaSBtZXJ1cGFrYW4gcGVuaXB1YW4gYmVyZGFzYXJrYW4gcG9sYSB0ZXJ0ZW50dS4NCjIuICoqRGlhZ25vc2lzIE1lZGlzKio6IE1lbmdoaXR1bmcga2VtdW5na2luYW4gcGFzaWVuIG1lbWlsaWtpIHBlbnlha2l0IHRlcnRlbnR1IGJlcmRhc2Fya2FuIGdlamFsYS4NCjMuICoqS2xhc2lmaWthc2kgZGFsYW0gUGVtYmVsYWphcmFuIE1lc2luKio6IE1pc2FsbnlhLCBhbGdvcml0bWEgTmHDr3ZlIEJheWVzIGRhbGFtIGtsYXNpZmlrYXNpIGRhdGEuDQoNCi0tLQ0KDQojIyAqKjMuIEtvcmVsYXNpIEFudGFyYSBQcm9iYWJpbGl0YXMgZGFuIFRlb3JlbWEgQmF5ZXMqKg0KDQojIyMgKipQcm9iYWJpbGl0YXMgU2ViYWdhaSBEYXNhciBUZW9yZW1hIEJheWVzKioNClRlb3JlbWEgQmF5ZXMgYWRhbGFoIHNhbGFoIHNhdHUgYXBsaWthc2kgdGluZ2thdCBsYW5qdXQgZGFyaSBwcm9iYWJpbGl0YXMuIFByb2JhYmlsaXRhcyBkYXNhciAoXChQKEEpXCksIFwoUChCKVwpLCBkYW4gXChQKEIgXG1pZCBBKVwpKSBtZW5qYWRpICoqa29tcG9uZW4gdXRhbWEqKiBkYWxhbSBtZW5naGl0dW5nIHByb2JhYmlsaXRhcyBiZXJzeWFyYXQgKFwoUChBIFxtaWQgQilcKSkuDQoNCiMjIyAqKktldGVya2FpdGFuIFV0YW1hKioNCjEuICoqUHJvYmFiaWxpdGFzIEF3YWwgKFwoUChBKVwpKSoqOiBUZW9yZW1hIEJheWVzIGRpbXVsYWkgZGVuZ2FuIGtleWFraW5hbiBhd2FsIGtpdGEgdGVudGFuZyBrZWphZGlhbiBcKEFcKS4NCjIuICoqSW5mb3JtYXNpIEJhcnUgKFwoUChCIFxtaWQgQSlcKSkqKjogUHJvYmFiaWxpdGFzIGJhaHdhIGluZm9ybWFzaSBiYXJ1IGNvY29rIGRlbmdhbiBrZWphZGlhbiBcKEFcKSBtZW5qYWRpIGVsZW1lbiBwZW50aW5nIGRhbGFtIG1lbXBlcmJhcnVpIGtleWFraW5hbi4NCjMuICoqUHJvYmFiaWxpdGFzIEJlcnN5YXJhdCAoXChQKEEgXG1pZCBCKVwpKSoqOiBIYXNpbCBha2hpciBkYXJpIFRlb3JlbWEgQmF5ZXMgYWRhbGFoIHByb2JhYmlsaXRhcyBiZXJzeWFyYXQsIHlhbmcgbWVuY2VybWlua2FuICoqa2V5YWtpbmFuIHlhbmcgZGlwZXJiYXJ1aSoqIHRlcmhhZGFwIFwoQVwpLCBzZXRlbGFoIG1lbXBlcnRpbWJhbmdrYW4gXChCXCkuDQoNCiMjIyAqKkNvbnRvaCoqDQpNaXNhbGthbjoNCi0gUHJvYmFiaWxpdGFzIGF3YWwgc2VzZW9yYW5nIHNha2l0IGZsdSBhZGFsYWggNSUgKFwoUChcdGV4dHtGbHV9KSA9IDAuMDVcKSkuDQotIEppa2Egc2VzZW9yYW5nIGRlbWFtLCA4MCUgZGFyaSBtZXJla2EgYmlhc2FueWEgc2FraXQgZmx1IChcKFAoXHRleHR7RGVtYW19IFxtaWQgXHRleHR7Rmx1fSkgPSAwLjhcKSkuDQotIFByb2JhYmlsaXRhcyBzZXNlb3JhbmcgZGVtYW0gc2VjYXJhIHVtdW0gYWRhbGFoIDEwJSAoXChQKFx0ZXh0e0RlbWFtfSkgPSAwLjFcKSkuDQoNCkRlbmdhbiBUZW9yZW1hIEJheWVzOg0KXFsNClAoXHRleHR7Rmx1fSBcbWlkIFx0ZXh0e0RlbWFtfSkgPSBcZnJhY3tQKFx0ZXh0e0RlbWFtfSBcbWlkIFx0ZXh0e0ZsdX0pIFxjZG90IFAoXHRleHR7Rmx1fSl9e1AoXHRleHR7RGVtYW19KX0NClxdDQpcWw0KUChcdGV4dHtGbHV9IFxtaWQgXHRleHR7RGVtYW19KSA9IFxmcmFjezAuOCBcY2RvdCAwLjA1fXswLjF9ID0gMC40IFx0ZXh0eyBhdGF1IH0gNDBcJQ0KXF0NCg0KSW50ZXJwcmV0YXNpOiBKaWthIHNlc2VvcmFuZyBkZW1hbSwgbWFrYSBrZW11bmdraW5hbiBkaWEgc2FraXQgZmx1IG1lbmluZ2thdCBtZW5qYWRpIDQwJS4NCg0KQmVyZGFzYXJrYW4gcGVuamVsYXNhbiBkaWF0YXMgZGFwYXQgZGlzaW1wdWxrYW4gYmFod2E6DQoNCjEuICoqUHJvYmFiaWxpdGFzKiogYWRhbGFoIGRhc2FyIHBlbmd1a3VyYW4ga2VtdW5na2luYW4gc3VhdHUga2VqYWRpYW4sIGJhaWsgZGFsYW0ga29udGVrcyBrZWphZGlhbiB0dW5nZ2FsIChtYXJnaW5hbCksIGtvbWJpbmFzaSBrZWphZGlhbiAoZ2FidW5nYW4pLCBhdGF1IGtlamFkaWFuIHlhbmcgYmVyZ2FudHVuZyBwYWRhIGluZm9ybWFzaSBsYWluIChiZXJzeWFyYXQpLiAgDQoyLiAqKlRlb3JlbWEgQmF5ZXMqKiBhZGFsYWggYWxhdCB1bnR1ayBtZW1wZXJiYXJ1aSBwcm9iYWJpbGl0YXMgZGVuZ2FuIGluZm9ybWFzaSBiYXJ1LCB5YW5nIG1lbXVuZ2tpbmthbiBraXRhIG1lbWJ1YXQga2VwdXR1c2FuIGxlYmloIGNlcmRhcyBiZXJkYXNhcmthbiBkYXRhLg0KMy4gSHVidW5nYW4gYW50YXJhIGtlZHVhbnlhIGFkYWxhaCAqKmZ1bmdzaW9uYWwgZGFuIHRhayB0ZXJwaXNhaGthbioqLiBUZW9yZW1hIEJheWVzIG1lbmdndW5ha2FuIHByaW5zaXAgcHJvYmFiaWxpdGFzIHVudHVrIG1lbWJlcmlrYW4gamF3YWJhbiB5YW5nIGxlYmloIGFrdXJhdCBkYWxhbSBzaXR1YXNpIGRlbmdhbiBrZXRpZGFrcGFzdGlhbiBkYW4gaW5mb3JtYXNpIHRhbWJhaGFuLg0KDQoNCg0KIyAqKlN0dWRpIEthc3VzIDEqKg0KDQojIyBQZW5lcmFwYW4gUHJvYmFiaWxpdGFzIGRhbGFtIFByZWRpa3NpIEt1YWxpdGFzIFByb2R1azoNCg0KLS0tDQoNCiMjICoqTWFzYWxhaCB5YW5nIEluZ2luIERpc2VsZXNhaWthbioqDQoNClBlcnVzYWhhYW4gbWFudWZha3R1ciBtZW5naGFkYXBpIHRhbnRhbmdhbiBkYWxhbSBtZW1hc3Rpa2FuIGt1YWxpdGFzIHByb2R1ay4gU2ViYWdhaSBiYWdpYW4gZGFyaSBldmFsdWFzaSBrdWFsaXRhcywgbWVyZWthIGluZ2luIG1lbmdldGFodWkgKipzZWJlcmFwYSBiZXNhciBrZW11bmdraW5hbiBwcm9kdWsgY2FjYXQqKiBqaWthIGRpa2V0YWh1aToNCjEuICoqS29tcG9uZW4qKiB5YW5nIGRpZ3VuYWthbiBiZXJrdWFsaXRhcyByZW5kYWguDQoyLiAqKlByb3NlcyBwcm9kdWtzaSoqIGRpbGFrdWthbiBkaSBiYXdhaCBzdGFuZGFyLg0KDQojIyMgKipBcGEgeWFuZyBJbmdpbiBLaXRhIENhcmk/KioNCktpdGEgZGltaW50YSBtZW5naGl0dW5nIHByb2JhYmlsaXRhcyBiYWh3YSBzdWF0dSBwcm9kdWsgKipjYWNhdCAoXChEID0gWWVzXCkpKiogYmVyZGFzYXJrYW4gaW5mb3JtYXNpOg0KLSAqKktvbXBvbmVuIGJlcmt1YWxpdGFzIHJlbmRhaCAoXChDID0gTG93XCkpKiouDQotICoqUHJvc2VzIHByb2R1a3NpIGRpIGJhd2FoIHN0YW5kYXIgKFwoUCA9IEJlbG93XCkpKiouDQoNCkRlbmdhbiBrYXRhIGxhaW4sIGtpdGEgbWVuY2FyaSAqKnByb2JhYmlsaXRhcyBiZXJzeWFyYXQqKjoNClxbDQpQKEQgPSBZZXMgXG1pZCBDID0gTG93LCBQID0gQmVsb3cpDQpcXQ0KDQojIyMgKipNZW5nYXBhIE1lbmdndW5ha2FuIFRlb3JlbWEgQmF5ZXM/KioNClRlb3JlbWEgQmF5ZXMgYWRhbGFoIGFsYXQgeWFuZyBzYW5nYXQgYmVyZ3VuYSB1bnR1ayBtZW5naGl0dW5nIHByb2JhYmlsaXRhcyBiZXJzeWFyYXQuIERhbGFtIGtvbnRla3MgaW5pLCBUZW9yZW1hIEJheWVzIG1lbXVuZ2tpbmthbiBraXRhIHVudHVrIG1lbXBlcmJhcnVpIHByb2JhYmlsaXRhcyBiYWh3YSBwcm9kdWsgY2FjYXQgKFwoRCA9IFllc1wpKSBiZXJkYXNhcmthbiBkdWEgaW5mb3JtYXNpIHRhbWJhaGFuIChcKEMgPSBMb3dcKSBkYW4gXChQID0gQmVsb3dcKSkuDQoNCi0tLQ0KDQojIyAqKkRhdGEgeWFuZyBEaWJlcmlrYW4qKg0KDQpEYXRhIGhpc3RvcmlzIHBlcnVzYWhhYW4gbWVtYmVyaWthbiBwcm9iYWJpbGl0YXMgZGFzYXIgc2ViYWdhaSBiZXJpa3V0Og0KDQoxLiAqKlByb2JhYmlsaXRhcyBwcm9kdWsgY2FjYXQqKjoNCiAgIC0gXChQKEQgPSBZZXMpID0gNVwlXCkgKDUlIGRhcmkgc2VtdWEgcHJvZHVrIGNhY2F0KS4NCiAgIC0gXChQKEQgPSBObykgPSA5NVwlXCkgKDk1JSBkYXJpIHNlbXVhIHByb2R1ayB0aWRhayBjYWNhdCkuDQoNCjIuICoqUHJvYmFiaWxpdGFzIHRlcmthaXQga29tcG9uZW4gZGFuIHByb3NlcyBwcm9kdWtzaSoqOg0KICAgLSBVbnR1ayBwcm9kdWsgKipjYWNhdCAoXChEID0gWWVzXCkpKio6DQogICAgIC0gNjAlIG1lbmdndW5ha2FuIGtvbXBvbmVuIGJlcmt1YWxpdGFzIHJlbmRhaCAoXChQKEMgPSBMb3cgXG1pZCBEID0gWWVzKSA9IDYwXCVcKSkuDQogICAgIC0gNzAlIGRpcHJvZHVrc2kgZGkgYmF3YWggc3RhbmRhciAoXChQKFAgPSBCZWxvdyBcbWlkIEQgPSBZZXMpID0gNzBcJVwpKS4NCiAgIC0gVW50dWsgcHJvZHVrICoqdGlkYWsgY2FjYXQgKFwoRCA9IE5vXCkpKio6DQogICAgIC0gMjAlIG1lbmdndW5ha2FuIGtvbXBvbmVuIGJlcmt1YWxpdGFzIHJlbmRhaCAoXChQKEMgPSBMb3cgXG1pZCBEID0gTm8pID0gMjBcJVwpKS4NCiAgICAgLSAzMCUgZGlwcm9kdWtzaSBkaSBiYXdhaCBzdGFuZGFyIChcKFAoUCA9IEJlbG93IFxtaWQgRCA9IE5vKSA9IDMwXCVcKSkuDQoNCi0tLQ0KDQojIyAqKkxhbmdrYWgtTGFuZ2thaCBNZW5nZ3VuYWthbiBUZW9yZW1hIEJheWVzKioNCg0KIyMjICoqMS4gUnVtdXMgVGVvcmVtYSBCYXllcyoqDQpSdW11cyB1dGFtYSBUZW9yZW1hIEJheWVzIHVudHVrIHByb2JhYmlsaXRhcyBiZXJzeWFyYXQ6DQpcWw0KUChEID0gWWVzIFxtaWQgQyA9IExvdywgUCA9IEJlbG93KSA9IFxmcmFje1AoQyA9IExvdywgUCA9IEJlbG93IFxtaWQgRCA9IFllcykgXGNkb3QgUChEID0gWWVzKX17UChDID0gTG93LCBQID0gQmVsb3cpfQ0KXF0NCg0KRGFsYW0gcnVtdXMgaW5pOg0KLSBcKFAoRCA9IFllcyBcbWlkIEMgPSBMb3csIFAgPSBCZWxvdylcKTogUHJvYmFiaWxpdGFzIHByb2R1ayBjYWNhdCwgamlrYSBkaWtldGFodWkga29tcG9uZW4gYmVya3VhbGl0YXMgcmVuZGFoIGRhbiBwcm9zZXMgcHJvZHVrc2kgZGkgYmF3YWggc3RhbmRhci4NCi0gXChQKEMgPSBMb3csIFAgPSBCZWxvdyBcbWlkIEQgPSBZZXMpXCk6IFByb2JhYmlsaXRhcyBiYWh3YSBwcm9kdWsgbWVuZ2d1bmFrYW4ga29tcG9uZW4gYmVya3VhbGl0YXMgcmVuZGFoIGRhbiBwcm9zZXMgcHJvZHVrc2kgZGkgYmF3YWggc3RhbmRhciwgamlrYSBwcm9kdWsgY2FjYXQuDQotIFwoUChEID0gWWVzKVwpOiBQcm9iYWJpbGl0YXMgZGFzYXIgYmFod2EgcHJvZHVrIGNhY2F0Lg0KLSBcKFAoQyA9IExvdywgUCA9IEJlbG93KVwpOiBQcm9iYWJpbGl0YXMgcHJvZHVrIG1lbmdndW5ha2FuIGtvbXBvbmVuIHJlbmRhaCBkYW4gcHJvc2VzIHByb2R1a3NpIGRpIGJhd2FoIHN0YW5kYXIgc2VjYXJhIGtlc2VsdXJ1aGFuLg0KDQotLS0NCg0KIyMjICoqMi4gTWVuZ2hpdHVuZyBLb21wb25lbiBSdW11cyoqDQoNCiMjIyMgKiphLiBIaXR1bmcgXChQKEMgPSBMb3csIFAgPSBCZWxvdyBcbWlkIEQgPSBZZXMpXCkqKg0KXFsNClAoQyA9IExvdywgUCA9IEJlbG93IFxtaWQgRCA9IFllcykgPSBQKEMgPSBMb3cgXG1pZCBEID0gWWVzKSBcY2RvdCBQKFAgPSBCZWxvdyBcbWlkIEQgPSBZZXMpDQpcXQ0KU3Vic3RpdHVzaSBkYXRhOg0KXFsNClAoQyA9IExvdywgUCA9IEJlbG93IFxtaWQgRCA9IFllcykgPSA2MFwlIFxjZG90IDcwXCUgPSA0MlwlDQpcXQ0KDQojIyMjICoqYi4gSGl0dW5nIFwoUChDID0gTG93LCBQID0gQmVsb3cgXG1pZCBEID0gTm8pXCkqKg0KXFsNClAoQyA9IExvdywgUCA9IEJlbG93IFxtaWQgRCA9IE5vKSA9IFAoQyA9IExvdyBcbWlkIEQgPSBObykgXGNkb3QgUChQID0gQmVsb3cgXG1pZCBEID0gTm8pDQpcXQ0KU3Vic3RpdHVzaSBkYXRhOg0KXFsNClAoQyA9IExvdywgUCA9IEJlbG93IFxtaWQgRCA9IE5vKSA9IDIwXCUgXGNkb3QgMzBcJSA9IDZcJQ0KXF0NCg0KIyMjIyAqKmMuIEhpdHVuZyBcKFAoQyA9IExvdywgUCA9IEJlbG93KVwpKioNCk1lbmdndW5ha2FuIGh1a3VtIHByb2JhYmlsaXRhcyB0b3RhbDoNClxbDQpQKEMgPSBMb3csIFAgPSBCZWxvdykgPSBQKEMgPSBMb3csIFAgPSBCZWxvdyBcbWlkIEQgPSBZZXMpIFxjZG90IFAoRCA9IFllcykgKyBQKEMgPSBMb3csIFAgPSBCZWxvdyBcbWlkIEQgPSBObykgXGNkb3QgUChEID0gTm8pDQpcXQ0KU3Vic3RpdHVzaSBkYXRhOg0KXFsNClAoQyA9IExvdywgUCA9IEJlbG93KSA9ICg0MlwlIFxjZG90IDVcJSkgKyAoNlwlIFxjZG90IDk1XCUpDQpcXQ0KXFsNClAoQyA9IExvdywgUCA9IEJlbG93KSA9IDIuMVwlICsgNS43XCUgPSA3LjhcJQ0KXF0NCg0KLS0tDQoNCiMjIyAqKjMuIEhpdHVuZyBQcm9iYWJpbGl0YXMgQmVyc3lhcmF0KioNCkd1bmFrYW4gcnVtdXMgVGVvcmVtYSBCYXllczoNClxbDQpQKEQgPSBZZXMgXG1pZCBDID0gTG93LCBQID0gQmVsb3cpID0gXGZyYWN7UChDID0gTG93LCBQID0gQmVsb3cgXG1pZCBEID0gWWVzKSBcY2RvdCBQKEQgPSBZZXMpfXtQKEMgPSBMb3csIFAgPSBCZWxvdyl9DQpcXQ0KU3Vic3RpdHVzaSBuaWxhaToNClxbDQpQKEQgPSBZZXMgXG1pZCBDID0gTG93LCBQID0gQmVsb3cpID0gXGZyYWN7NDJcJSBcY2RvdCA1XCV9ezcuOFwlfQ0KXF0NClxbDQpQKEQgPSBZZXMgXG1pZCBDID0gTG93LCBQID0gQmVsb3cpID0gXGZyYWN7Mi4xXCV9ezcuOFwlfSBcYXBwcm94IDI2LjkyXCUNClxdDQoNCi0tLQ0KDQojIyAqKktlc2ltcHVsYW4qKg0KDQpEYWxhbSAqKlN0dWRpIEthc3VzIDEqKiwga2l0YSBiZXJoYXNpbCBtZW5nZ3VuYWthbiAqKlRlb3JlbWEgQmF5ZXMqKiB1bnR1ayBtZW5naGl0dW5nIHByb2JhYmlsaXRhcyBiZXJzeWFyYXQgYmFod2Egc3VhdHUgcHJvZHVrIGFrYW4gY2FjYXQgKFwoRCA9IFllc1wpKSwgZGVuZ2FuIGluZm9ybWFzaSB0YW1iYWhhbiBiYWh3YSBwcm9kdWsgdGVyc2VidXQgbWVuZ2d1bmFrYW4gKiprb21wb25lbiBiZXJrdWFsaXRhcyByZW5kYWgqKiAoXChDID0gTG93XCkpIGRhbiBkaXByb2R1a3NpIGRlbmdhbiAqKnByb3NlcyBkaSBiYXdhaCBzdGFuZGFyKiogKFwoUCA9IEJlbG93XCkpLiANCg0KSGFzaWwgcGVyaGl0dW5nYW4gbWVudW5qdWtrYW4gYmFod2EgcHJvYmFiaWxpdGFzIHRlcnNlYnV0IGFkYWxhaCAqKjI2LjkyJSoqLiBCZXJpa3V0IGFkYWxhaCBwZW5qZWxhc2FuIGxlbmdrYXAgdW50dWsgbWVueWltcHVsa2FuIGhhc2lsIGluaToNCg0KIyMjICoqMS4gUmVsZXZhbnNpIFRlb3JlbWEgQmF5ZXMqKg0KVGVvcmVtYSBCYXllcyBtZXJ1cGFrYW4gYWxhdCB5YW5nIHNhbmdhdCBwZW50aW5nIGRhbGFtIHBlbmdhbWJpbGFuIGtlcHV0dXNhbiBiZXJiYXNpcyBkYXRhLiBEZW5nYW4gbWVuZ2d1bmFrYW4gVGVvcmVtYSBCYXllcywga2l0YSBkYXBhdCBtZW5naGl0dW5nIHByb2JhYmlsaXRhcyBrb25kaXNpIHRlcnRlbnR1IChcKEQgPSBZZXNcKSkgYmVyZGFzYXJrYW4gaW5mb3JtYXNpIGJhcnUgKFwoQyA9IExvdywgUCA9IEJlbG93XCkpIHlhbmcgdGVyc2VkaWEuIFJ1bXVzIHV0YW1hIGRhcmkgVGVvcmVtYSBCYXllcyBhZGFsYWg6DQpcWw0KUChEID0gWWVzIFxtaWQgQyA9IExvdywgUCA9IEJlbG93KSA9IFxmcmFje1AoQyA9IExvdywgUCA9IEJlbG93IFxtaWQgRCA9IFllcykgXGNkb3QgUChEID0gWWVzKX17UChDID0gTG93LCBQID0gQmVsb3cpfQ0KXF0NCg0KUnVtdXMgaW5pIG1lbmdnYWJ1bmdrYW4gcHJvYmFiaWxpdGFzIGF3YWwgKFwoUChEID0gWWVzKVwpKSwgcHJvYmFiaWxpdGFzIGJlcnN5YXJhdCAoXChQKEMgPSBMb3csIFAgPSBCZWxvdyBcbWlkIEQgPSBZZXMpXCkpLCBkYW4gcHJvYmFiaWxpdGFzIHRvdGFsIChcKFAoQyA9IExvdywgUCA9IEJlbG93KVwpKSB1bnR1ayBtZW1iZXJpa2FuIHByb2JhYmlsaXRhcyBiZXJzeWFyYXQgeWFuZyBkaXBlcmJhcnVpIChcKFAoRCA9IFllcyBcbWlkIEMgPSBMb3csIFAgPSBCZWxvdylcKSkuDQoNCg0KIyMjICoqMi4gTWVuZ2FwYSBQcm9iYWJpbGl0YXMgVGlkYWsgVGluZ2dpPyoqDQpNZXNraXB1biBkaWtldGFodWkgYmFod2EgKiprb21wb25lbiBiZXJrdWFsaXRhcyByZW5kYWgqKiBkYW4gKipwcm9zZXMgZGkgYmF3YWggc3RhbmRhcioqIG1lbmluZ2thdGthbiByaXNpa28gY2FjYXQsIGhhc2lsIGFraGlybnlhIHRldGFwICoqMjYuOTIlKioga2FyZW5hIGJlYmVyYXBhIGFsYXNhbjoNCi0gSGFueWEgKio1JSoqIGRhcmkgc2VtdWEgcHJvZHVrIHlhbmcgY2FjYXQgKFwoUChEID0gWWVzKSA9IDVcJVwpKS4gUHJvYmFiaWxpdGFzIGRhc2FyIGluaSBtZW1iYXRhc2kgaGFzaWwgYWtoaXIuDQotIFNlYmFnaWFuIGJlc2FyIHByb2R1ayAoXCg5NVwlXCkpIHRpZGFrIGNhY2F0IChcKFAoRCA9IE5vKVwpKSwgc2VoaW5nZ2Ega29tYmluYXNpIGtvbXBvbmVuIHJlbmRhaCBkYW4gcHJvc2VzIGJ1cnVrIGp1Z2Egc2VyaW5nIHRlcmphZGkgcGFkYSBwcm9kdWsgeWFuZyB0aWRhayBjYWNhdC4NCg0KDQojIyMgKiozLiBNZW5nYXBhIEhhc2lsIEluaSBQZW50aW5nPyoqDQpQcm9iYWJpbGl0YXMgYmVyc3lhcmF0IGluaSBzYW5nYXQgcGVudGluZyBkYWxhbSBwZW5nYW1iaWxhbiBrZXB1dHVzYW46DQotIFBlcnVzYWhhYW4gZGFwYXQgbWVuZ2d1bmFrYW4gaGFzaWwgaW5pIHVudHVrIGZva3VzIHBhZGEgKipwcm9zZXMgaW5zcGVrc2kqKiBkYW4gKipwZW5nYXdhc2FuIGtvbXBvbmVuKiouIEppa2EgcHJvZHVrIG1lbmdndW5ha2FuIGtvbXBvbmVuIGJlcmt1YWxpdGFzIHJlbmRhaCBkYW4gcHJvc2VzbnlhIGRpIGJhd2FoIHN0YW5kYXIsIGFkYSByaXNpa28gbGViaWggdGluZ2dpIGJhaHdhIHByb2R1ayBha2FuIGNhY2F0Lg0KLSBOYW11biwgcHJvYmFiaWxpdGFzIDI2LjkyJSBtZW51bmp1a2thbiBiYWh3YSAqKmtvbWJpbmFzaSBpbmkgdGlkYWsgc2VsYWx1IG1lbmdoYXNpbGthbiBwcm9kdWsgY2FjYXQqKiwgc2VoaW5nZ2Ega2VwdXR1c2FuIHVudHVrIG1lbWVyaWtzYSBzZWx1cnVoIHByb2R1ayBtdW5na2luIHRpZGFrIGVmaXNpZW4gc2VjYXJhIGJpYXlhLg0KDQoNCiMjIyAqKjQuIEJhZ2FpbWFuYSBUZW9yZW1hIEJheWVzIE1lbWJhbnR1IGRpIER1bmlhIE55YXRhPyoqDQotICoqVGVvcmVtYSBCYXllcyoqIGRpZ3VuYWthbiBzZWNhcmEgbHVhcyBkYWxhbSBhbmFsaXNpcyByaXNpa28sIGRldGVrc2kgcGVuaXB1YW4sIGRpYWdub3NpcyBtZWRpcywgZGFuIHBlbWVsaWhhcmFhbiBwcmVkaWt0aWYuDQotIERhbGFtIGtvbnRla3MgaW5pLCBUZW9yZW1hIEJheWVzIG1lbXVuZ2tpbmthbiBwZXJ1c2FoYWFuIG1lbWFuZmFhdGthbiBkYXRhIGhpc3RvcmlzIHVudHVrIG1lbXBlcmtpcmFrYW4gcmlzaWtvIGRlbmdhbiBsZWJpaCBha3VyYXQuDQotIEtvbWJpbmFzaSBwcm9iYWJpbGl0YXMgYmVyc3lhcmF0IFwoUChDID0gTG93LCBQID0gQmVsb3cgXG1pZCBEID0gWWVzKVwpIGRhbiBwcm9iYWJpbGl0YXMgZGFzYXIgXChQKEQgPSBZZXMpXCkgbWVuY2VybWlua2FuIGh1YnVuZ2FuIGFudGFyYSAqKnBlbnllYmFiKiogKGtvbXBvbmVuIGRhbiBwcm9zZXMpIGRlbmdhbiAqKmVmZWsqKiAoY2FjYXQgcHJvZHVrKS4NCg0KDQojIyMgKio1LiBCYWdhaW1hbmEgUHJvYmFiaWxpdGFzIEJpc2EgQmVydWJhaD8qKg0KSmlrYSBhc3Vtc2kgZGF0YSBiZXJ1YmFoLCBoYXNpbCBha2hpcm55YSBqdWdhIGFrYW4gYmVyYmVkYS4gTWlzYWxueWE6DQotIEppa2EgXChQKEQgPSBZZXMpXCkgbWVuaW5na2F0IG1lbmphZGkgMTAlLCBoYXNpbCBha2hpciBha2FuIGxlYmloIHRpbmdnaS4NCi0gSmlrYSBwcm9kdWsgY2FjYXQgaGFueWEgc2ViYWdpYW4ga2VjaWwgeWFuZyBtZW5nZ3VuYWthbiBrb21wb25lbiByZW5kYWggYXRhdSBwcm9zZXMgYnVydWssIHByb2JhYmlsaXRhcyBiZXJzeWFyYXQgYWthbiBsZWJpaCByZW5kYWguDQoNCg0KIyMjICoqNi4gTmlsYWkgUHJha3RpcyBkYXJpIFByb2JhYmlsaXRhcyAyNi45MiUqKg0KSGFzaWwgaW5pIG1lbnVuanVra2FuIGJhaHdhIGFkYSByaXNpa28gc2lnbmlmaWthbiAoc2VraXRhciAyNyUpIGJhaHdhIHByb2R1ayBha2FuIGNhY2F0IGRhbGFtIGtvbmRpc2kgeWFuZyBkaXNlYnV0a2FuLiBEZW5nYW4gaW5mb3JtYXNpIGluaSwgcGVydXNhaGFhbiBkYXBhdDoNCi0gKipNZW5ndXJhbmdpIHJpc2lrbyoqIGRlbmdhbiBtZW5pbmdrYXRrYW4ga3VhbGl0YXMga29tcG9uZW4gZGFuIHN0YW5kYXIgcHJvZHVrc2kuDQotICoqTWVuZ2Fsb2thc2lrYW4gc3VtYmVyIGRheWEqKiB1bnR1ayBpbnNwZWtzaSBwYWRhIHByb2R1ayBkZW5nYW4gcmlzaWtvIGxlYmloIHRpbmdnaS4NCg0KKipLZXNpbXB1bGFuIEFraGlyOioqICANClRlb3JlbWEgQmF5ZXMgbWVtdW5na2lua2FuIGtpdGEgdW50dWsgbWVtcGVyYmFydWkga2V5YWtpbmFuIGF3YWwgKFwoUChEID0gWWVzKVwpKSBkZW5nYW4gaW5mb3JtYXNpIHRhbWJhaGFuIChcKEMgPSBMb3dcKSBkYW4gXChQID0gQmVsb3dcKSkuIEhhc2lsIGluaSBtZW1iZXJpa2FuIHdhd2FzYW4geWFuZyBtZW5kYWxhbSB0ZW50YW5nIHJpc2lrbyBjYWNhdCBwcm9kdWssIG1lbWJhbnR1IHBlcnVzYWhhYW4gbWVtYnVhdCBrZXB1dHVzYW4geWFuZyBsZWJpaCBiYWlrIHVudHVrIG1lbmdvcHRpbWFsa2FuIGt1YWxpdGFzIGRhbiBlZmlzaWVuc2kuDQoNCg0KDQoNCiMgKipTdHVkaSBLYXN1cyAyKioNCg0KIyMgKipQZW5lcmFwYW4gUHJvYmFiaWxpdGFzIGRhbGFtIERldGVrc2kgUGVuaXB1YW4gVHJhbnNha3NpOioqDQoNClNlYnVhaCBwZXJ1c2FoYWFuIGUtY29tbWVyY2UgaW5naW4gbWVuZGV0ZWtzaSB0cmFuc2Frc2kgeWFuZyBiZXJwb3RlbnNpIHBlbmlwdWFuLiBCZXJkYXNhcmthbiBkYXRhIGhpc3RvcmlzOg0KDQoxLiAqKkhhbnlhIDElIHRyYW5zYWtzaSB5YW5nIG1lcnVwYWthbiBwZW5pcHVhbioqIChcKFAoRiA9IEZyYXVkKSA9IDFcJVwpKS4gIA0KDQoyLiAqKjk5JSB0cmFuc2Frc2kgYWRhbGFoIHRyYW5zYWtzaSBub3JtYWwqKiAoXChQKEYgPSBOb3QgRnJhdWQpID0gOTlcJVwpKS4gIA0KDQoqKkZpdHVyIHRhbWJhaGFuIHVudHVrIG1lbmRldGVrc2kgcGVuaXB1YW4gdHJhbnNha3NpKio6DQotIExva2FzaSB0cmFuc2Frc2kgKFwoTFwpKTogQXBha2FoIGRpbGFrdWthbiBkaSBsdWFyIG5lZ2VyaSAoRm9yZWlnbikuDQotIEp1bWxhaCBwZW1iZWxpYW4gKFwoQVwpKTogQXBha2FoIGxlYmloIGRhcmkgJDUwMCAoSGlnaCkuDQotIE1ldG9kZSBwZW1iYXlhcmFuIChcKE1cKSk6IE1lbmdndW5ha2FuIGthcnR1IGtyZWRpdCAoQ3JlZGl0IENhcmQpLg0KDQoqKkRhcmkgZGF0YSBoaXN0b3JpczoqKg0KLSBVbnR1ayB0cmFuc2Frc2kgKipwZW5pcHVhbiAoXChGID0gRnJhdWRcKSkqKjoNCiAgLSA2MCUgZGlsYWt1a2FuIGRpIGx1YXIgbmVnZXJpIChcKFAoTCA9IEZvcmVpZ24gXG1pZCBGID0gRnJhdWQpID0gNjBcJVwpKS4NCiAgLSA3MCUgbWVtaWxpa2kganVtbGFoIHBlbWJlbGlhbiBsZWJpaCBkYXJpICQ1MDAgKFwoUChBID0gSGlnaCBcbWlkIEYgPSBGcmF1ZCkgPSA3MFwlXCkpLg0KICAtIDgwJSBtZW5nZ3VuYWthbiBrYXJ0dSBrcmVkaXQgKFwoUChNID0gQ3JlZGl0IENhcmQgXG1pZCBGID0gRnJhdWQpID0gODBcJVwpKS4NCi0gVW50dWsgdHJhbnNha3NpICoqbm9ybWFsIChcKEYgPSBOb3QgRnJhdWRcKSkqKjoNCiAgLSAyMCUgZGlsYWt1a2FuIGRpIGx1YXIgbmVnZXJpIChcKFAoTCA9IEZvcmVpZ24gXG1pZCBGID0gTm90IEZyYXVkKSA9IDIwXCVcKSkuDQogIC0gMTAlIG1lbWlsaWtpIGp1bWxhaCBwZW1iZWxpYW4gbGViaWggZGFyaSAkNTAwIChcKFAoQSA9IEhpZ2ggXG1pZCBGID0gTm90IEZyYXVkKSA9IDEwXCVcKSkuDQogIC0gNTAlIG1lbmdndW5ha2FuIGthcnR1IGtyZWRpdCAoXChQKE0gPSBDcmVkaXQgQ2FyZCBcbWlkIEYgPSBOb3QgRnJhdWQpID0gNTBcJVwpKS4NCg0KKipUdWp1YW46KiogSGl0dW5nIHByb2JhYmlsaXRhcyBiYWh3YSB0cmFuc2Frc2kgbWVydXBha2FuICoqcGVuaXB1YW4gKFwoRiA9IEZyYXVkXCkpKiogamlrYSBkaWtldGFodWkgYmFod2EgdHJhbnNha3NpOiAgDQoxLiBEaWxha3VrYW4gZGkgbHVhciBuZWdlcmkgKFwoTCA9IEZvcmVpZ25cKSkuICANCjIuIEp1bWxhaCBwZW1iZWxpYW4gbGViaWggZGFyaSAkNTAwIChcKEEgPSBIaWdoXCkpLiAgDQozLiBNZW5nZ3VuYWthbiBrYXJ0dSBrcmVkaXQgKFwoTSA9IENyZWRpdCBDYXJkXCkpLiAgDQoNCi0tLQ0KDQojIyAqKkxhbmdrYWgtTGFuZ2thaCoqDQoNCiMjIyAqKjEuIEd1bmFrYW4gUnVtdXMgVGVvcmVtYSBCYXllcyoqDQpcWw0KUChGID0gRnJhdWQgXG1pZCBMID0gRm9yZWlnbiwgQSA9IEhpZ2gsIE0gPSBDcmVkaXQgQ2FyZCkgPSBcZnJhY3tQKEwsIEEsIE0gXG1pZCBGID0gRnJhdWQpIFxjZG90IFAoRiA9IEZyYXVkKX17UChMLCBBLCBNKX0NClxdDQoNCiMjIyMgKioyLiBEYXRhIEF3YWwgZGFsYW0gUGVyc2VudGFzZSoqDQotIFByb2JhYmlsaXRhcyB0cmFuc2Frc2kgcGVuaXB1YW46DQogIC0gXChQKEYgPSBGcmF1ZCkgPSAxXCVcKQ0KICAtIFwoUChGID0gTm90IEZyYXVkKSA9IDk5XCVcKQ0KLSBQcm9iYWJpbGl0YXMgZml0dXIgdW50dWsgdHJhbnNha3NpIHBlbmlwdWFuOg0KICAtIFwoUChMID0gRm9yZWlnbiBcbWlkIEYgPSBGcmF1ZCkgPSA2MFwlXCkNCiAgLSBcKFAoQSA9IEhpZ2ggXG1pZCBGID0gRnJhdWQpID0gNzBcJVwpDQogIC0gXChQKE0gPSBDcmVkaXQgQ2FyZCBcbWlkIEYgPSBGcmF1ZCkgPSA4MFwlXCkNCi0gUHJvYmFiaWxpdGFzIGZpdHVyIHVudHVrIHRyYW5zYWtzaSBub3JtYWw6DQogIC0gXChQKEwgPSBGb3JlaWduIFxtaWQgRiA9IE5vdCBGcmF1ZCkgPSAyMFwlXCkNCiAgLSBcKFAoQSA9IEhpZ2ggXG1pZCBGID0gTm90IEZyYXVkKSA9IDEwXCVcKQ0KICAtIFwoUChNID0gQ3JlZGl0IENhcmQgXG1pZCBGID0gTm90IEZyYXVkKSA9IDUwXCVcKQ0KDQotLS0NCg0KIyMjICoqMy4gSGl0dW5nIEtvbXBvbmVuIFJ1bXVzKioNCg0KIyMjIyAqKmEuIEhpdHVuZyBcKFAoTCwgQSwgTSBcbWlkIEYgPSBGcmF1ZClcKToqKg0KRGVuZ2FuIGFzdW1zaSBpbmRlcGVuZGVuc2kgYW50YXIgZml0dXI6DQpcWw0KUChMLCBBLCBNIFxtaWQgRiA9IEZyYXVkKSA9IFAoTCA9IEZvcmVpZ24gXG1pZCBGID0gRnJhdWQpIFxjZG90IFAoQSA9IEhpZ2ggXG1pZCBGID0gRnJhdWQpIFxjZG90IFAoTSA9IENyZWRpdCBDYXJkIFxtaWQgRiA9IEZyYXVkKQ0KXF0NClN1YnN0aXR1c2kgbmlsYWkgKHBlcnNlbnRhc2UpOg0KXFsNClAoTCwgQSwgTSBcbWlkIEYgPSBGcmF1ZCkgPSA2MFwlIFxjZG90IDcwXCUgXGNkb3QgODBcJSA9IDMzLjZcJQ0KXF0NCg0KIyMjIyAqKmIuIEhpdHVuZyBcKFAoTCwgQSwgTSBcbWlkIEYgPSBOb3QgRnJhdWQpXCk6KioNCkRlbmdhbiBhc3Vtc2kgaW5kZXBlbmRlbnNpIGFudGFyIGZpdHVyOg0KXFsNClAoTCwgQSwgTSBcbWlkIEYgPSBOb3QgRnJhdWQpID0gUChMID0gRm9yZWlnbiBcbWlkIEYgPSBOb3QgRnJhdWQpIFxjZG90IFAoQSA9IEhpZ2ggXG1pZCBGID0gTm90IEZyYXVkKSBcY2RvdCBQKE0gPSBDcmVkaXQgQ2FyZCBcbWlkIEYgPSBOb3QgRnJhdWQpDQpcXQ0KU3Vic3RpdHVzaSBuaWxhaToNClxbDQpQKEwsIEEsIE0gXG1pZCBGID0gTm90IEZyYXVkKSA9IDIwXCUgXGNkb3QgMTBcJSBcY2RvdCA1MFwlID0gMVwlDQpcXQ0KDQojIyMjICoqYy4gSGl0dW5nIFwoUChMLCBBLCBNKVwpOioqDQpNZW5nZ3VuYWthbiBodWt1bSBwcm9iYWJpbGl0YXMgdG90YWw6DQpcWw0KUChMLCBBLCBNKSA9IFAoTCwgQSwgTSBcbWlkIEYgPSBGcmF1ZCkgXGNkb3QgUChGID0gRnJhdWQpICsgUChMLCBBLCBNIFxtaWQgRiA9IE5vdCBGcmF1ZCkgXGNkb3QgUChGID0gTm90IEZyYXVkKQ0KXF0NClN1YnN0aXR1c2kgbmlsYWkgKHBlcnNlbnRhc2UpOg0KXFsNClAoTCwgQSwgTSkgPSAoMzMuNlwlIFxjZG90IDFcJSkgKyAoMVwlIFxjZG90IDk5XCUpDQpcXQ0KXFsNClAoTCwgQSwgTSkgPSAwLjMzNlwlICsgMC45OVwlID0gMS4zMjZcJQ0KXF0NCg0KLS0tDQoNCiMjIyAqKjQuIEhpdHVuZyBQcm9iYWJpbGl0YXMgQmVyc3lhcmF0KioNCkd1bmFrYW4gcnVtdXM6DQpcWw0KUChGID0gRnJhdWQgXG1pZCBMID0gRm9yZWlnbiwgQSA9IEhpZ2gsIE0gPSBDcmVkaXQgQ2FyZCkgPSBcZnJhY3tQKEwsIEEsIE0gXG1pZCBGID0gRnJhdWQpIFxjZG90IFAoRiA9IEZyYXVkKX17UChMLCBBLCBNKX0NClxdDQpTdWJzdGl0dXNpIG5pbGFpIChwZXJzZW50YXNlKToNClxbDQpQKEYgPSBGcmF1ZCBcbWlkIEwgPSBGb3JlaWduLCBBID0gSGlnaCwgTSA9IENyZWRpdCBDYXJkKSA9IFxmcmFjezMzLjZcJSBcY2RvdCAxXCV9ezEuMzI2XCV9DQpcXQ0KXFsNClAoRiA9IEZyYXVkIFxtaWQgTCA9IEZvcmVpZ24sIEEgPSBIaWdoLCBNID0gQ3JlZGl0IENhcmQpID0gXGZyYWN7MC4zMzZcJX17MS4zMjZcJX0gXGFwcHJveCAyNS4zNFwlDQpcXQ0KDQotLS0NCg0KDQojIyAqKktlc2ltcHVsYW4qKg0KDQpEYWxhbSAqKlN0dWRpIEthc3VzIDIqKiwga2l0YSBiZXJoYXNpbCBtZW5nZ3VuYWthbiAqKlRlb3JlbWEgQmF5ZXMqKiB1bnR1ayBtZW5naGl0dW5nIHByb2JhYmlsaXRhcyBiZXJzeWFyYXQgYmFod2Egc3VhdHUgdHJhbnNha3NpIGFkYWxhaCBwZW5pcHVhbiAoXChGID0gRnJhdWRcKSksIGRlbmdhbiBpbmZvcm1hc2kgdGFtYmFoYW4gYmFod2E6DQoNCjEuIFRyYW5zYWtzaSBkaWxha3VrYW4gZGkgbHVhciBuZWdlcmkgKFwoTCA9IEZvcmVpZ25cKSkuICANCjIuIEp1bWxhaCBwZW1iZWxpYW4gbGViaWggZGFyaSAkNTAwIChcKEEgPSBIaWdoXCkpLiAgDQozLiBNZXRvZGUgcGVtYmF5YXJhbiBtZW5nZ3VuYWthbiBrYXJ0dSBrcmVkaXQgKFwoTSA9IENyZWRpdCBDYXJkXCkpLiAgDQoNCkhhc2lsIHBlcmhpdHVuZ2FuIG1lbnVuanVra2FuIGJhaHdhIHByb2JhYmlsaXRhcyB0ZXJzZWJ1dCBhZGFsYWggKioyNS4zNCUqKi4gQmVyaWt1dCBhZGFsYWggcGVuamVsYXNhbiBsZW5na2FwIHVudHVrIG1lbnlpbXB1bGthbiBoYXNpbCBpbmk6DQoNCg0KIyMjICoqMS4gUmVsZXZhbnNpIFRlb3JlbWEgQmF5ZXMqKg0KVGVvcmVtYSBCYXllcyBhZGFsYWggYWxhdCB5YW5nIHNhbmdhdCBwZW50aW5nIGRhbGFtIGFuYWxpc2lzIHJpc2lrbyBkYW4gZGV0ZWtzaSBhbm9tYWxpLiBEYWxhbSBrb250ZWtzIGluaSwgVGVvcmVtYSBCYXllcyBtZW11bmdraW5rYW4ga2l0YSB1bnR1ayBtZW1wZXJiYXJ1aSBwcm9iYWJpbGl0YXMgYXdhbCAoXChQKEYgPSBGcmF1ZClcKSkgYmVyZGFzYXJrYW4gaW5mb3JtYXNpIHRhbWJhaGFuIChcKEwgPSBGb3JlaWduLCBBID0gSGlnaCwgTSA9IENyZWRpdCBDYXJkXCkpLiBSdW11cyB1dGFtYW55YSBhZGFsYWg6DQpcWw0KUChGID0gRnJhdWQgXG1pZCBMID0gRm9yZWlnbiwgQSA9IEhpZ2gsIE0gPSBDcmVkaXQgQ2FyZCkgPSBcZnJhY3tQKEwsIEEsIE0gXG1pZCBGID0gRnJhdWQpIFxjZG90IFAoRiA9IEZyYXVkKX17UChMLCBBLCBNKX0NClxdDQoNClJ1bXVzIGluaSBtZW5nZ2FidW5na2FuIHByb2JhYmlsaXRhcyBhd2FsLCBwcm9iYWJpbGl0YXMgYmVyc3lhcmF0LCBkYW4gcHJvYmFiaWxpdGFzIHRvdGFsIHVudHVrIG1lbWJlcmlrYW4gcHJlZGlrc2kgYmVyYmFzaXMgZGF0YSB5YW5nIGxlYmloIGFrdXJhdC4NCg0KDQojIyMgKioyLiBNZW5nYXBhIFByb2JhYmlsaXRhcyBUaWRhayBUaW5nZ2k/KioNCk1lc2tpcHVuIGtldGlnYSBmaXR1ciAobG9rYXNpLCBqdW1sYWggcGVtYmVsaWFuLCBkYW4gbWV0b2RlIHBlbWJheWFyYW4pIG1lbmluZ2thdGthbiBrZW11bmdraW5hbiBwZW5pcHVhbiwgaGFzaWwgYWtoaXJueWEgaGFueWEgKioyNS4zNCUqKi4gSGFsIGluaSBkaXNlYmFia2FuIG9sZWg6DQotIFByb2JhYmlsaXRhcyBkYXNhciBiYWh3YSBzdWF0dSB0cmFuc2Frc2kgYWRhbGFoIHBlbmlwdWFuIChcKFAoRiA9IEZyYXVkKVwpKSBzYW5nYXQga2VjaWwsIHlhaXR1IGhhbnlhICoqMSUqKi4NCi0gU2ViYWdpYW4gYmVzYXIgdHJhbnNha3NpIChcKDk5XCVcKSkgYnVrYW4gcGVuaXB1YW4sIHNlaGluZ2dhIGZpdHVyIHNlcGVydGkgbG9rYXNpIGx1YXIgbmVnZXJpLCBqdW1sYWggcGVtYmVsaWFuIHRpbmdnaSwgZGFuIHBlbmdndW5hYW4ga2FydHUga3JlZGl0IGp1Z2Egc2VyaW5nIHRlcmphZGkgcGFkYSB0cmFuc2Frc2kgeWFuZyBidWthbiBwZW5pcHVhbi4NCg0KDQojIyMgKiozLiBNZW5nYXBhIEhhc2lsIEluaSBQZW50aW5nPyoqDQpQcm9iYWJpbGl0YXMgYmVyc3lhcmF0IGluaSBzYW5nYXQgcGVudGluZyBkYWxhbSBwZW5nYW1iaWxhbiBrZXB1dHVzYW46DQotIFBlcnVzYWhhYW4gZGFwYXQgbWVtcHJpb3JpdGFza2FuIHBlbWVyaWtzYWFuIHBhZGEgdHJhbnNha3NpIGRlbmdhbiBmaXR1ciBzZXBlcnRpIGluaSBrYXJlbmEgbWVtaWxpa2kgcmlzaWtvIGxlYmloIHRpbmdnaSBkaWJhbmRpbmdrYW4gdHJhbnNha3NpIGJpYXNhLg0KLSBOYW11biwgcHJvYmFiaWxpdGFzICoqMjUuMzQlKiogbWVudW5qdWtrYW4gYmFod2EgdGlkYWsgc2VtdWEgdHJhbnNha3NpIGRlbmdhbiBmaXR1ciBpbmkgYWRhbGFoIHBlbmlwdWFuLCBzZWhpbmdnYSBwZW1lcmlrc2FhbiBzZWNhcmEgc2VsZWt0aWYgbGViaWggZWZpc2llbiBkaWJhbmRpbmdrYW4gbWVtZXJpa3NhIHNlbHVydWggdHJhbnNha3NpLg0KDQoNCiMjIyAqKjQuIEJhZ2FpbWFuYSBUZW9yZW1hIEJheWVzIE1lbWJhbnR1IGRpIER1bmlhIE55YXRhPyoqDQotICoqVGVvcmVtYSBCYXllcyoqIGRpZ3VuYWthbiBzZWNhcmEgbHVhcyBkYWxhbSBkZXRla3NpIHBlbmlwdWFuLCBhbmFsaXNpcyByaXNpa28sIGRhbiBwZW5nYW1iaWxhbiBrZXB1dHVzYW4gYmVyYmFzaXMgZGF0YS4NCi0gRGFsYW0ga29udGVrcyBpbmksIFRlb3JlbWEgQmF5ZXMgbWVtdW5na2lua2FuIHBlcnVzYWhhYW4gdW50dWsgbWVtcGVya2lyYWthbiByaXNpa28gdHJhbnNha3NpIGJlcmRhc2Fya2FuIGRhdGEgaGlzdG9yaXMgeWFuZyBhZGEuDQotIFByb2JhYmlsaXRhcyBiZXJzeWFyYXQgXChQKEwsIEEsIE0gXG1pZCBGID0gRnJhdWQpXCkgZGFuIFwoUChGID0gRnJhdWQpXCkgbWVuY2VybWlua2FuIGh1YnVuZ2FuIGFudGFyYSAqKnBlbnllYmFiKiogKGZpdHVyIHRyYW5zYWtzaSkgZGVuZ2FuICoqZWZlayoqIChwZW5pcHVhbikuDQoNCg0KIyMjICoqNS4gQmFnYWltYW5hIFByb2JhYmlsaXRhcyBCaXNhIEJlcnViYWg/KioNCkppa2EgYXN1bXNpIGRhdGEgYmVydWJhaCwgaGFzaWwgYWtoaXJueWEganVnYSBha2FuIGJlcnViYWguIENvbnRvaDoNCi0gSmlrYSBcKFAoRiA9IEZyYXVkKVwpIG1lbmluZ2thdCBtZW5qYWRpIDUlLCBwcm9iYWJpbGl0YXMgYWtoaXIganVnYSBha2FuIG1lbmluZ2thdC4NCi0gSmlrYSB0cmFuc2Frc2kgcGVuaXB1YW4gbWVtaWxpa2kgcG9sYSBiYXJ1IHlhbmcgYmVyYmVkYSBkYXJpIGRhdGEgaGlzdG9yaXMgKG1pc2FsbnlhLCBsZWJpaCBqYXJhbmcgbWVuZ2d1bmFrYW4ga2FydHUga3JlZGl0KSwgcHJvYmFiaWxpdGFzIGJlcnN5YXJhdCBha2FuIGJlcnViYWguDQoNCg0KIyMjICoqNi4gTmlsYWkgUHJha3RpcyBkYXJpIFByb2JhYmlsaXRhcyAyNS4zNCUqKg0KSGFzaWwgaW5pIG1lbnVuanVra2FuIGJhaHdhIGFkYSByaXNpa28gc2lnbmlmaWthbiBiYWh3YSB0cmFuc2Frc2kgZGVuZ2FuIGZpdHVyIGluaSBhZGFsYWggcGVuaXB1YW4uIERlbmdhbiBpbmZvcm1hc2kgaW5pLCBwZXJ1c2FoYWFuIGRhcGF0Og0KLSAqKk1lbmluZ2thdGthbiBlZmlzaWVuc2kgcGVtZXJpa3NhYW4qKiBkZW5nYW4gZm9rdXMgcGFkYSB0cmFuc2Frc2kgZGVuZ2FuIHJpc2lrbyB0aW5nZ2kuDQotICoqTWVuZ3VyYW5naSBiaWF5YSBvcGVyYXNpb25hbCoqIGRlbmdhbiBtZW5naGluZGFyaSBwZW1lcmlrc2FhbiB0cmFuc2Frc2kgYmVyaXNpa28gcmVuZGFoLg0KDQoNCioqS2VzaW1wdWxhbiBBa2hpcjoqKiAgDQpUZW9yZW1hIEJheWVzIG1lbXVuZ2tpbmthbiBraXRhIHVudHVrIG1lbXBlcmJhcnVpIGtleWFraW5hbiBhd2FsIChcKFAoRiA9IEZyYXVkKVwpKSBkZW5nYW4gaW5mb3JtYXNpIHRhbWJhaGFuIChcKEwgPSBGb3JlaWduLCBBID0gSGlnaCwgTSA9IENyZWRpdCBDYXJkXCkpLiBIYXNpbCBpbmkgbWVtYmVyaWthbiB3YXdhc2FuIG1lbmRhbGFtIHRlbnRhbmcgcmlzaWtvIHRyYW5zYWtzaSwgbWVtYmFudHUgcGVydXNhaGFhbiBtZW5kZXRla3NpIHBlbmlwdWFuIHNlY2FyYSBsZWJpaCBlZmlzaWVuLCBkYW4gbWVuaW5na2F0a2FuIGFrdXJhc2kgcGVuZ2FtYmlsYW4ga2VwdXR1c2FuIGJlcmJhc2lzIGRhdGEuDQoNCg0KIyBSZWZlcmVuc2kNCg0KX1NpcmVnYXIsIEIuICgyMDI0KS4gS29uc2VwIGRhc2FyIHByb2JhYmlsaXRhcy4gRGlha3NlcyBkYXJpXyBodHRwczovL2Jvb2tkb3duLm9yZy9kc2NpZW5jZWxhYnMvc3RhdGlzdGlrYV9kYXNhci9fYm9vay9Lb25zZXBfRGFzYXJfUHJvYmFiaWxpdGFzLmh0bWwNCg0KX0xPUEVaLCBKLiAoMjAyMikuIEVwaXN0ZW1vbG9naSwgUHJvYmFiaWxpdGFzLCBkYW4gU2FpbnMuIFBlbmdhbnRhciBGaWxzYWZhdDogRXBpc3RlbW9sb2dpLl8NCg0KX0hhbmRheWFuaSwgUi4sICYgUHVybm9tbywgQS4gUy4gKDIwMjQpLiBQZW5lcmFwYW4gVGVvcmVtYSBCYXllcyBVbnR1ayBNZW5kaWFnbm9zYSBIYW1hIGRhbiBQZW55YWtpdCBQYWRhIFRhbmFtYW4gS2VsYXBhIFNhd2l0LiBKRUtJTi1KdXJuYWwgVGVrbmlrIEluZm9ybWF0aWthLCA0KDIpLCAyODctMjk5Ll8NCg0KX1N5YW1zdWwsIE0uICgyMDIyKS4gQmFiIDIgUHJvYmFiaWxpdGFzLiBTdGF0aXN0aWsgS2VzZWhhdGFuOiBUZW9yaSBkYW4gQXBsaWthc2ksIDEwLl8NCg0KX01hcmxpYW5hLCBSLiBSLiwgJiBTdGF0LCBNLiAoMjAxNikuIFN0YXRpc3Rpa2EgZGFuIFByb2JhYmlsaXRhcy4gUmV0cmlldmVkIEFwcmlsLCAxLCAyMDIzLl8NCg==